Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Security course
Search
mogumogu mogumi
May 14, 2019
Technology
130
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Security course
mogumogu mogumi
May 14, 2019
More Decks by mogumogu mogumi
See All by mogumogu mogumi
9/13 九州大学OB企業訪問資料[パーソンリンク]
mgmgmogumi
0
100
ツールで見るフロント界のトレンド
mgmgmogumi
0
88
機械学習APIの紹介とデモ.pdf
mgmgmogumi
0
45
エンジニアの日常
mgmgmogumi
0
230
読み手の印象推定に基づくツイートのフィルタリングに関する研究 / A Study on Filtering Tweet based on Impression Estimation of Reading
mgmgmogumi
0
160
読み手の印象推定に基づくツイートのフィルタリングに関する研究 ポスター / A Study on Filtering Tweet based on Impression Estimation of Reading (Poster)
mgmgmogumi
0
34
kurogi kurumi student work
mgmgmogumi
0
300
ここからうまれたぼくたち酵母~pao
mgmgmogumi
0
41
Other Decks in Technology
See All in Technology
データ界隈LT祭 第1回LT登壇
taromatsui_cccmkhd
2
1.4k
LLMに渡さなかった仕事
nanaism
0
710
Railsのように考える: See through the Master
snoozer05
PRO
4
1k
Claude in Chrome 入門 / Introduction to Claude in Chrome
cielo1985
0
850
AI に書かせたその API、 “信頼” できますか?
nagix
0
120
アクセスキーこわい やめかたと漏らさない工夫
sassssan68
1
390
AgentCore Runtime上にAgentic Coding基盤を構築・展開する際の設計ポイントと限界点 / Design considerations and limitations when building an agentic coding platform on AgentCore Runtime
har1101
4
290
アプリをもっと"iOSアプリっぽく"する小さな工夫 / Small Touches That Make Your App Feel More Like an iOS App
matsuji
2
950
AIに任せた品質は、誰が見立てるのか - AI時代のテストマネジメント
nakanao
3
2.1k
GoのInterface内部構造から学ぶ!最高パフォーマンスを出すコード設計
yappli_developers
0
140
積み重なった技術負債への挑戦 〜初手としての全社ゴト化〜
techtekt
PRO
0
1.3k
Reactの設計論
uhyo
24
14k
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Writing Fast Ruby
sferik
630
63k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.8k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
520
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
240
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
280
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
700
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Transcript
セキュリティ講座 2019/5/14 @kurumi.kurogi
セキュリティとは?
セキュリティとは 安全、防犯、保安 コンピュータやソフトウェアなどを技術的に保護し 漏洩、改ざん、攻撃、侵入などの危険を排除
セキュリティとは 構築時? 実装時? 運用時?
セキュリティとは 構築時? 実装時? 運用時?
実装時における対策 1. SQL インジェクション 2. XSS(クロスサイト・スクリプティング) 3. CSRF(クロスサイト・リクエスト・フォージェリ) 4. セッションハイジャック
実装時における対策 1. SQL インジェクション 2. XSS(クロスサイト・スクリプティング) 3. CSRF(クロスサイト・リクエスト・フォージェリ) 4. セッションハイジャック
None
SQLインジェクション 脆弱性のある実装 $query = "SELECT * FROM user WHERE id
= ‘$uid’”; $uidに以下を入れてみると? •‘or ‘A’=‘A •‘; delete * from user where ‘a’=‘a
対策 • プレースホルダ • エスケープ処理 ※LaravelやRailsなどのFWを使用する場合は、ORMがいい感じ に処理してくれることが多い
対策 修正後の実装(プレースホルダ使用) $query = "SELECT * FROM usr WHERE uid
= ?” execute($uid);
ハンズオン 攻撃してみよう! https://contents.saitolab.org/taiken/
実装時における対策 1. SQL インジェクション 2. XSS(クロスサイト・スクリプティング) 3. CSRF(クロスサイト・リクエスト・フォージェリ) 4. セッションハイジャック
None
XSS(クロスサイトスクリプティング) 脆弱性のある実装 <div> 検索結果:<?php echo $keyword ?> </div> $keywordに以下を入れると? •
<script>alert("Bug!!!");</script> • <font color=“red”>
対策 • HTMLテキストの入力を許可しない • エスケープ処理 • バリデーション • 文字コードを指定 •
HTTPレスポンスヘッダに指定 • HTMLのMETA宣言部分に指定
対策 修正済みの実装(エスケープ処理) <div> 検索結果:<?php echo htmlspecialchars($keyword, ENT_QUOTES) ?> </div> HTMLエンティティ
補足 HTMLテキストの入力を許可したい場合は? • 機能で代替 • ホワイトリスト方式 • ブラックリスト方式
ハンズオン 攻撃してみよう! https://contents.saitolab.org/taiken/
実装時における対策 1. SQL インジェクション 2. XSS(クロスサイト・スクリプティング) 3. CSRF(クロスサイト・リクエスト・フォージェリ) 4. セッションハイジャック
None
CSRF(クロスサイト・リクエスト・フォージェリ) 脆弱性のある実装 (フロント側) <form action="commit.php" method="post"> <input type="hidden" name="new_name" value="脆弱
太郎"> <input type=“hidden” name=“new_address” value=“東京都”> <input type="submit" name="commit" value="実行"> </form> (サーバ側) if( ! $_SESSION['authenticated'] ) { exit(); } update_userinfo( $_SESSION['uid'], $_POST['new_name'], $_POST['new_address']);
CSRF(クロスサイト・リクエスト・フォージェリ) 攻撃用のサイト <form action="http://◦◦/commit.php" method="post" name="f1"> <input type=“hidden” name=“new_name” value=“攻撃者">
<input type=“hidden” name=“new_address” value=“大阪府"> </form> <script> document.forms['f1'].submit(); </script>
対策 • 指定のフォームを利用して投稿していることを確認する 1. セッション開始時にトークンを発行する 2. 送信用フォームにトークンをhidden要素で埋め込む 3. トークンをPOSTメソッドのリクエストで渡す 4.
トークンが正しいか検証する
対策 修正後の実装 (サーバ側/token発行時) $csrf_token = get_csrf_token(); //ランダムな文字列を生成 $_SESSION['csrf_token'] = $csrf_token;
(フロント側) <form action="commit.php" method="post"> <input type="hidden" name="new_name" value="脆弱 太郎"> <input type=“hidden” name=“new_address” value=“東京都"> <input type="hidden" name=”scrf_token" value=”<?=$csrf_token?>”> <input type="submit" name="commit" value="完了"> </form> (サーバ側/リクエスト受取時) if( ! $_SESSION['authenticated'] ) { exit(); } if($_POST[‘scrf_token’]!=$_SESSION['csrf_token']) { exit(); } update_userinfo($_SESSION['uid'],$_POST['new_name'], $_POST['new_address']);
ハンズオン 攻撃してみよう! https://contents.saitolab.org/taiken/
実装時における対策 1. SQL インジェクション 2. XSS(クロスサイト・スクリプティング) 3. CSRF(クロスサイト・リクエスト・フォージェリ) 4. セッションハイジャック
セッションハイジャック • セッションIDの推測 • セッションIDの盗用 • セッションIDの固定化
None
None
None
対策 • セッションIDを推測困難にする • セッションIDをURLパラメータに格納しない • HTTPSのCookieはsecure属性を加える • ログイン成功後に新しいセッションを開始する •
セッションID以外の秘密情報を関連づけて管理する
その他の攻撃など • OS コマンド・インジェクション • HTTP ヘッダ・インジェクション • クリックジャッキング •
バッファオーバーフロー • Dos/DDos攻撃 • ゼロデイ攻撃 • バックドア • フィッシング • ディレクトリ・トラバーサル
補足 構築時におけるセキュリティ • ポートフォワード • ファイアウォール • DMZ • アクセス制限
補足 運用時におけるセキュリティ • 各ツール/バージョンの脆弱性 • 監査 • ソーシャルハッキング • PCロック、紛失防止、USB禁止
参考 • 安全なウェブサイトの作り方:IPA 独立行政法人 情報処理推 進機構 • 体系的に学ぶ 安全なWebアプリケーションの作り方 •
OWASP Top10 • CVE Details • 「世界最悪のログイン処理コード」を解説してみた - Qiita