SlideShare uma empresa Scribd logo
1 de 16
第3回 F制度
Webアプリケーションセキュリティ
ディスカッション課題
2015/09/03 第3回 株式会社フレクト
テクニカルスペシャリスト
小川 充(@mitsuruog)
謝辞
• 本資料は、FirefoxOSコミュニティ主宰「Webセキュリティ・ハン
ズオン 〜攻撃して学ぶ、HTML5のセキュリティ〜」にて利用
された課題を、机上でできるようにしたものです。
• 主宰のFirefoxOSコミュニティ、講師の皆さん素晴らしい課題
本当にありがとうございました。
Webセキュリティ・ハンズオン 〜攻撃して学ぶ、HTML5のセキュリティ〜
https://firefox-os.doorkeeper.jp/events/21218
F制度とは?
• 株式会社フレクトにて月1回程度行われているイベント
• 企画は社員主導で行う
• 社員、パートナー参加可能
• 個人のスキル・価値向上を目的としつつ、共同作業(チーム
ビルディング)を行うことで、メンバー間の結束力を高めること
も目的としている
ディスカッションの概要
• 4人ずつ班に分かれて、架空のSNSの設計に潜む脆
弱性を探します
– 趣旨は、脆弱性に繋がりかねない設計上のポイントにつ
いての新たな気付きを得ることです。
• 見つけた脆弱性のプレゼンタイムを設けます。
– お手元の設計資料の脆弱性がある箇所に付箋で内容を
記載してください。
– どんな攻撃ができるか、どんなまずいことが起こるか、ど
う修正すればよいか説明できると良いです。
設計対象(SNS)
メッセージ入力(最大140文字) 自分の投稿したものは削除ボタンを表示
(管理者は全ての投稿を削除可能)
友人の投稿したメッセージを取得
投稿者情報を表示
SNSシステムの構成
• ドメインは「sns.flect.co.jp」。URLルーティング設定は次の通り。
– / SNS画面
– /admin 管理画面
– /api WebAPI
ブラウザ
localStorage
(認証情報)
Appサーバ
SNS画面
WebAPI
(SNSデータ)
HTTP
クライアント サーバー
管理画面
WebAPIの仕様
• APIサーバはSNSの各種操作を行う為のAPIを提供して
いる。
• APIはCORSに準拠しており、クライアントは
XMLHttpRequestLevel2を用いて非同期でデータを取
得できる。
• ログイン中のユーザの識別にはtokenという乱数値を
使用する。tokenは Cookieを通じてAPIサーバに送信さ
れる。
ユーザ認証(1)
• 有効なtokenがlocalStorageに存在しない場合、ユーザにロク
゙インを要求する。
• ログイン画面はAPIサーバにより提供される。
Topページ
ログイン
ページ
会員
ページ
localStorageにtokenがある
ログアウト(localStorageからtokenを削除して画面をリロード)
localStorageに
tokenがない
認証後に
tokenを取得
ログイン
ユーザー情報
を取得
ユーザ認証(2)
• ユーザはログイン画面で、あらかじめ設定されたUserとPWを
入力する。
• PWを忘れた場合は、指定された質問に答えることでログイ
ンできる (質問は登録時に登録してある)
秘密の質問
ログインページ 会員ページ
User/PWが正しい場合
(Cookieにtokenが格納される)
秘密の答えが正しい場合
(Cookieにtokenが格納される)
User/PW正しくない場合は
ログインページを表示
PW忘れの場合
PW忘れた方
は
こちら
User
PW
User
好きな色は何?
ユーザ認証(3)
• Cookieの仕様
– APIアクセス時は認証済みtokenをCookieで送信する。Cookieの詳細
は下記参照。
• 認証情報の保持仕様
– 認証情報はlocalStorage上に格納する。
Key Expires Domain Path Secure HttpOnly
token 1ヶ月 sns.flect.co.jp /
Key value
token 認証済みtoken
user ログインユーザの会員情報をシリアライズ化したもの
データ形式は「ユーザ取得API」のレスポンス参照
管理画面
• 会員ページから管理画面へのリンクは作成しない。
• 管理画面はUser/PW認証をかける。
401エラー
管理者ログイン
ページ
管理ページ
User/PWが正しい場合
User/PWが
異なる場合
User
PW
メッセージ取得API
• メッセージは開始と終了を指定して取得できる。
リクエスト
GET /messages?start={始点}&end={終点}&count={件数}
始点(任意):テキスト取得開始位置(テキストIDで指定)
終点(任意):テキスト取得終了位置(テキストIDで指定)。デフォルトは最新テキストID
始点(任意):テキスト取得件数。デフォルトは20件
レスポンス
{
"status": "ステータスコード(1=成功, 0=失敗)",
"result": {
"messages": [{
"messageId": "メッセージID",
"time": "投稿時のUNIX時間(例 1404162795)",
"display_time": "表示用の時間(例 2015/09/03 12:34:56)",
“uid”: “メッセージ投稿者のユーザID",
"message": "メッセージ本文(最大140文字)"
}, {
...
}]
}
}
ユーザ取得API
• ユーザは自身と友人のユーザ情報を取得できる。
リクエスト
GET /user?uid={ユーザID}
ユーザID(必須):ユーザを一意に識別するID
レスポンス
{
"status": "ステータスコード(1=成功, 0=失敗)",
"result": {
“uid”: “ユーザID(システム採番したもの)",
"snsId": "ログインID(例 mitsuruog)",
"name": "表示名(例 小川充)",
"admin": "管理者フラグ(1=管理者, 0=一般)"
}
}
メッセージ投稿API
• メッセージ投稿の最大文字数は140文字。
リクエスト
POST /messages?uid={ユーザID}&message={メッセージ}
ユーザID(必須):ログイン中のユーザ
メッセージ(必須):投稿するメッセージ(UTF−8文字列、最大140文字)
レスポンス
{
"status": "ステータスコード(1=成功, 0=失敗)",
"result": {
"messageId": "割り当てられたメッセージID"
}
}
メッセージ削除API
• 自分の投稿は投稿の「x」ボタンを押すことで削除できる。
• 管理者フラグ1(true)のユーザは、全ての投稿に「x」ボタンが
付き、自分を含む全ての投稿を削除できる。
リクエスト
DELETE /messages?id={メッセージID}&admin={管理者フラグ}
メッセージID(必須):メッセージを一意に識別するID
管理者フラグ(任意):1(管理者)0(一般)。デフォルトは0
レスポンス
{
"status": "ステータスコード(1=成功, 0=失敗)",
"result": {
"messageId": "削除されたメッセージID"
}
}
ログアウト
• 画面右上の「ログアウト」ボタンを押すと、LocalStorage上に保
存されているtokenを削除する。
• ログアウトが完了すると、Top画面に遷移する。

Mais conteúdo relacionado

Destaque

Isc2 japan chapter発足LT
Isc2 japan chapter発足LTIsc2 japan chapter発足LT
Isc2 japan chapter発足LT
Haga Takeshi
 
「情報処理技術者試験。H28年度春期からの“情報セキュリティマネジメント試験”と,SC試験合格者“登録制度”の動向」
「情報処理技術者試験。H28年度春期からの“情報セキュリティマネジメント試験”と,SC試験合格者“登録制度”の動向」「情報処理技術者試験。H28年度春期からの“情報セキュリティマネジメント試験”と,SC試験合格者“登録制度”の動向」
「情報処理技術者試験。H28年度春期からの“情報セキュリティマネジメント試験”と,SC試験合格者“登録制度”の動向」
Naoki MURAYAMA
 
自分でできるWebアプリケーション脆弱性診断 - デブサミ2010
自分でできるWebアプリケーション脆弱性診断 - デブサミ2010自分でできるWebアプリケーション脆弱性診断 - デブサミ2010
自分でできるWebアプリケーション脆弱性診断 - デブサミ2010
Sen Ueno
 
Metasploitでペネトレーションテスト
MetasploitでペネトレーションテストMetasploitでペネトレーションテスト
Metasploitでペネトレーションテスト
super_a1ice
 

Destaque (13)

KOF2010 - 合い言葉は\爽快セキュリティ!/
KOF2010 - 合い言葉は\爽快セキュリティ!/KOF2010 - 合い言葉は\爽快セキュリティ!/
KOF2010 - 合い言葉は\爽快セキュリティ!/
 
SEから見た情報セキュリティの課題
SEから見た情報セキュリティの課題SEから見た情報セキュリティの課題
SEから見た情報セキュリティの課題
 
Isc2 japan chapter発足LT
Isc2 japan chapter発足LTIsc2 japan chapter発足LT
Isc2 japan chapter発足LT
 
Webアプリケーションのセキュリティ
WebアプリケーションのセキュリティWebアプリケーションのセキュリティ
Webアプリケーションのセキュリティ
 
CrystalでもRailsを使いたいですか?
CrystalでもRailsを使いたいですか?CrystalでもRailsを使いたいですか?
CrystalでもRailsを使いたいですか?
 
2015 6 3security
2015 6 3security2015 6 3security
2015 6 3security
 
Shell shock事件が明らかにするあなたの組織における情報セキュリティ力
Shell shock事件が明らかにするあなたの組織における情報セキュリティ力Shell shock事件が明らかにするあなたの組織における情報セキュリティ力
Shell shock事件が明らかにするあなたの組織における情報セキュリティ力
 
「情報処理技術者試験。H28年度春期からの“情報セキュリティマネジメント試験”と,SC試験合格者“登録制度”の動向」
「情報処理技術者試験。H28年度春期からの“情報セキュリティマネジメント試験”と,SC試験合格者“登録制度”の動向」「情報処理技術者試験。H28年度春期からの“情報セキュリティマネジメント試験”と,SC試験合格者“登録制度”の動向」
「情報処理技術者試験。H28年度春期からの“情報セキュリティマネジメント試験”と,SC試験合格者“登録制度”の動向」
 
自分でできるWebアプリケーション脆弱性診断 - デブサミ2010
自分でできるWebアプリケーション脆弱性診断 - デブサミ2010自分でできるWebアプリケーション脆弱性診断 - デブサミ2010
自分でできるWebアプリケーション脆弱性診断 - デブサミ2010
 
Metasploitでペネトレーションテスト
MetasploitでペネトレーションテストMetasploitでペネトレーションテスト
Metasploitでペネトレーションテスト
 
CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)
 
セキュリティ入門
セキュリティ入門セキュリティ入門
セキュリティ入門
 
セキュリティ入門 ( 情報保護編 )
セキュリティ入門 ( 情報保護編 )セキュリティ入門 ( 情報保護編 )
セキュリティ入門 ( 情報保護編 )
 

Semelhante a Webアプリケーションセキュリティ ディスカッション資料

Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」
Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」
Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」
Noritada Shimizu
 
FxOSはウェアラブルデバイスの夢を見るか?
FxOSはウェアラブルデバイスの夢を見るか?FxOSはウェアラブルデバイスの夢を見るか?
FxOSはウェアラブルデバイスの夢を見るか?
Masakazu Muraoka
 
Html5でOpen Dataをやってみる
Html5でOpen DataをやってみるHtml5でOpen Dataをやってみる
Html5でOpen Dataをやってみる
Masakazu Muraoka
 

Semelhante a Webアプリケーションセキュリティ ディスカッション資料 (20)

Web∩アプリ
Web∩アプリWeb∩アプリ
Web∩アプリ
 
FIT-HAC CTF
FIT-HAC CTFFIT-HAC CTF
FIT-HAC CTF
 
Small Language Model Local Launch on AI Tour Tokyo
Small Language Model Local Launch on AI Tour TokyoSmall Language Model Local Launch on AI Tour Tokyo
Small Language Model Local Launch on AI Tour Tokyo
 
Thing.jsについて
Thing.jsについてThing.jsについて
Thing.jsについて
 
Itca yammer提案110615
Itca yammer提案110615Itca yammer提案110615
Itca yammer提案110615
 
2019 0917 nw-jaws_f-secure3min
2019 0917 nw-jaws_f-secure3min2019 0917 nw-jaws_f-secure3min
2019 0917 nw-jaws_f-secure3min
 
2017年のセキュリティ 傾向と対策講座
2017年のセキュリティ 傾向と対策講座2017年のセキュリティ 傾向と対策講座
2017年のセキュリティ 傾向と対策講座
 
Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」
Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」
Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」
 
FxOSはウェアラブルデバイスの夢を見るか?
FxOSはウェアラブルデバイスの夢を見るか?FxOSはウェアラブルデバイスの夢を見るか?
FxOSはウェアラブルデバイスの夢を見るか?
 
若手エンジニア向けカンファレンス #BitValley2020 登壇資料 (オタ駆動開発)
若手エンジニア向けカンファレンス #BitValley2020 登壇資料 (オタ駆動開発)若手エンジニア向けカンファレンス #BitValley2020 登壇資料 (オタ駆動開発)
若手エンジニア向けカンファレンス #BitValley2020 登壇資料 (オタ駆動開発)
 
KeycloakのCNCF incubating project入りまでのアップストリーム活動の歩み
KeycloakのCNCF incubating project入りまでのアップストリーム活動の歩みKeycloakのCNCF incubating project入りまでのアップストリーム活動の歩み
KeycloakのCNCF incubating project入りまでのアップストリーム活動の歩み
 
#MSIgnite x Japan Microsoft MVP/RD - Learning story
#MSIgnite x Japan Microsoft MVP/RD - Learning story#MSIgnite x Japan Microsoft MVP/RD - Learning story
#MSIgnite x Japan Microsoft MVP/RD - Learning story
 
A 2a:アジャイルなオフショア開発
A 2a:アジャイルなオフショア開発A 2a:アジャイルなオフショア開発
A 2a:アジャイルなオフショア開発
 
Html5でOpen Dataをやってみる
Html5でOpen DataをやってみるHtml5でOpen Dataをやってみる
Html5でOpen Dataをやってみる
 
20230724_JAWS-UG福岡_発表資料
20230724_JAWS-UG福岡_発表資料20230724_JAWS-UG福岡_発表資料
20230724_JAWS-UG福岡_発表資料
 
2019 0223 jawsdays2019_slideshare
2019 0223 jawsdays2019_slideshare2019 0223 jawsdays2019_slideshare
2019 0223 jawsdays2019_slideshare
 
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
 
20151114 _html5無料セミナー(OSC2015徳島)
20151114 _html5無料セミナー(OSC2015徳島)20151114 _html5無料セミナー(OSC2015徳島)
20151114 _html5無料セミナー(OSC2015徳島)
 
Connect_GANs_Actor-Critic
Connect_GANs_Actor-CriticConnect_GANs_Actor-Critic
Connect_GANs_Actor-Critic
 
くらう道 オフライン道場 ~ Azure インフルエンサー養成講座 ~
くらう道 オフライン道場 ~ Azure インフルエンサー養成講座 ~ くらう道 オフライン道場 ~ Azure インフルエンサー養成講座 ~
くらう道 オフライン道場 ~ Azure インフルエンサー養成講座 ~
 

Mais de Mitsuru Ogawa

メンテナンス性の良いWebシステムを構築するためにjavaとフロントエンドでやるべきこと
メンテナンス性の良いWebシステムを構築するためにjavaとフロントエンドでやるべきことメンテナンス性の良いWebシステムを構築するためにjavaとフロントエンドでやるべきこと
メンテナンス性の良いWebシステムを構築するためにjavaとフロントエンドでやるべきこと
Mitsuru Ogawa
 

Mais de Mitsuru Ogawa (18)

React+TypeScriptもいいぞ
React+TypeScriptもいいぞReact+TypeScriptもいいぞ
React+TypeScriptもいいぞ
 
Angular2 rc.1 unit testing overview
Angular2 rc.1 unit testing overviewAngular2 rc.1 unit testing overview
Angular2 rc.1 unit testing overview
 
Lightningコンポーネント事始め
Lightningコンポーネント事始めLightningコンポーネント事始め
Lightningコンポーネント事始め
 
ゆるふわWoT&firefoxOS体験記
ゆるふわWoT&firefoxOS体験記ゆるふわWoT&firefoxOS体験記
ゆるふわWoT&firefoxOS体験記
 
今後のWeb開発の未来を考えてangular jsにしました(拡大版)
今後のWeb開発の未来を考えてangular jsにしました(拡大版)今後のWeb開発の未来を考えてangular jsにしました(拡大版)
今後のWeb開発の未来を考えてangular jsにしました(拡大版)
 
今後のWeb開発の未来を考えてangularJSにしました
今後のWeb開発の未来を考えてangularJSにしました今後のWeb開発の未来を考えてangularJSにしました
今後のWeb開発の未来を考えてangularJSにしました
 
エンタープライヤーのためのWeb Componentsハンズオン
エンタープライヤーのためのWeb ComponentsハンズオンエンタープライヤーのためのWeb Componentsハンズオン
エンタープライヤーのためのWeb Componentsハンズオン
 
エンタープライズとHTML5〜エンタープライズでHTML5って本当に必要なのか?〜
エンタープライズとHTML5〜エンタープライズでHTML5って本当に必要なのか?〜エンタープライズとHTML5〜エンタープライズでHTML5って本当に必要なのか?〜
エンタープライズとHTML5〜エンタープライズでHTML5って本当に必要なのか?〜
 
国内初事例に学ぶSAPUI5
国内初事例に学ぶSAPUI5国内初事例に学ぶSAPUI5
国内初事例に学ぶSAPUI5
 
35歳無名のシステムエンジニアが1年半でフロントエンジニアになるために行った3つの成長戦略
35歳無名のシステムエンジニアが1年半でフロントエンジニアになるために行った3つの成長戦略35歳無名のシステムエンジニアが1年半でフロントエンジニアになるために行った3つの成長戦略
35歳無名のシステムエンジニアが1年半でフロントエンジニアになるために行った3つの成長戦略
 
賢くツールを使って脱人海戦術駆動テスト
賢くツールを使って脱人海戦術駆動テスト賢くツールを使って脱人海戦術駆動テスト
賢くツールを使って脱人海戦術駆動テスト
 
メンテナンス性の良いWebシステムを構築するためにjavaとフロントエンドでやるべきこと
メンテナンス性の良いWebシステムを構築するためにjavaとフロントエンドでやるべきことメンテナンス性の良いWebシステムを構築するためにjavaとフロントエンドでやるべきこと
メンテナンス性の良いWebシステムを構築するためにjavaとフロントエンドでやるべきこと
 
HTML5とOSSで作るブラウザで簡単顔認識
HTML5とOSSで作るブラウザで簡単顔認識HTML5とOSSで作るブラウザで簡単顔認識
HTML5とOSSで作るブラウザで簡単顔認識
 
業務系WebアプリケーションがStrutsから旅立つ日
業務系WebアプリケーションがStrutsから旅立つ日業務系WebアプリケーションがStrutsから旅立つ日
業務系WebアプリケーションがStrutsから旅立つ日
 
ゆるふわCSS3
ゆるふわCSS3 ゆるふわCSS3
ゆるふわCSS3
 
これからフロントエンジニアを目指すあなたへ
これからフロントエンジニアを目指すあなたへこれからフロントエンジニアを目指すあなたへ
これからフロントエンジニアを目指すあなたへ
 
オフラインWeb 今どきのデータ永続化事情
オフラインWeb 今どきのデータ永続化事情オフラインWeb 今どきのデータ永続化事情
オフラインWeb 今どきのデータ永続化事情
 
Enja OSSやってます
Enja OSSやってますEnja OSSやってます
Enja OSSやってます
 

Webアプリケーションセキュリティ ディスカッション資料