Skip to main content
Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
EN
Upload
Download free for 30 days
Sign in
Uploaded by
Hiroshi Tokumaru
51,665 views
徳丸本に載っていないWebアプリケーションセキュリティ
PHPカンファレンス北海道にて 2012/04/21
Read more
165
Save
Share
Embed
1
/ 75
2
/ 75
3
/ 75
4
/ 75
5
/ 75
6
/ 75
7
/ 75
8
/ 75
9
/ 75
10
/ 75
11
/ 75
12
/ 75
13
/ 75
14
/ 75
15
/ 75
16
/ 75
17
/ 75
Most read
18
/ 75
Most read
19
/ 75
20
/ 75
More Related Content
PPTX
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
by
abend_cve_9999_0001
35 slides
10.5K views
PDF
ウェブアプリケーションセキュリティ超入門
by
Hiroshi Tokumaru
54 slides
48.9K views
PPTX
最近のやられアプリを試してみた
by
zaki4649
16 slides
26.4K views
PDF
とある診断員とSQLインジェクション
by
zaki4649
47 slides
80.2K views
PPTX
イベント駆動プログラミングとI/O多重化
by
Gosuke Miyashita
78 slides
16K views
PDF
とある診断員と色々厄介な脆弱性達
by
zaki4649
37 slides
27.5K views
PDF
Form認証で学ぶSpring Security入門
by
Ryosuke Uchitate
64 slides
12.4K views
PPTX
若手エンジニアのためのセキュリティ講座
by
Hiroshi Tokumaru
63 slides
32.2K views
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
by
abend_cve_9999_0001
35 slides
10.5K views
ウェブアプリケーションセキュリティ超入門
by
Hiroshi Tokumaru
54 slides
48.9K views
最近のやられアプリを試してみた
by
zaki4649
16 slides
26.4K views
とある診断員とSQLインジェクション
by
zaki4649
47 slides
80.2K views
イベント駆動プログラミングとI/O多重化
by
Gosuke Miyashita
78 slides
16K views
とある診断員と色々厄介な脆弱性達
by
zaki4649
37 slides
27.5K views
Form認証で学ぶSpring Security入門
by
Ryosuke Uchitate
64 slides
12.4K views
若手エンジニアのためのセキュリティ講座
by
Hiroshi Tokumaru
63 slides
32.2K views
What's hot
PDF
SSIとDIDで何を解決したいのか?(β版)
by
Naohiro Fujie
80 slides
26.6K views
PDF
オンラインゲームの仕組みと工夫
by
Yuta Imai
56 slides
889.1K views
PDF
ADRという考えを取り入れてみて
by
infinite_loop
49 slides
3.1K views
PDF
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
by
CODE BLUE
55 slides
6.2K views
PDF
Fluentdのお勧めシステム構成パターン
by
Kentaro Yoshida
43 slides
51.8K views
PPTX
ウェブセキュリティの常識
by
Hiroshi Tokumaru
39 slides
31.7K views
PDF
イミュータブルデータモデルの極意
by
Yoshitaka Kawashima
28 slides
29.1K views
PDF
SQL大量発行処理をいかにして高速化するか
by
Shogo Wakayama
27 slides
61K views
PDF
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
by
Amazon Web Services Japan
73 slides
63.7K views
PDF
What's new in Spring Batch 5
by
ikeyat
85 slides
12.7K views
PDF
Proxy War
by
zaki4649
106 slides
15.2K views
PDF
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
by
Amazon Web Services Japan
42 slides
6.2K views
PDF
XSS再入門
by
Hiroshi Tokumaru
31 slides
89K views
PDF
AWSのログ管理ベストプラクティス
by
Akihiro Kuwano
57 slides
79.8K views
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
by
Hiroshi Tokumaru
107 slides
112.2K views
PDF
例外設計における大罪
by
Takuto Wada
37 slides
76.9K views
PPTX
HTTP2 最速実装 〜入門編〜
by
Kaoru Maeda
42 slides
32.2K views
PDF
Javaのログ出力: 道具と考え方
by
Taku Miyakawa
67 slides
79.1K views
PDF
Serverless時代のJavaについて
by
Amazon Web Services Japan
90 slides
13.6K views
PPTX
今だから!Amazon CloudFront 徹底活用
by
Yasuhiro Araki, Ph.D
36 slides
8.2K views
SSIとDIDで何を解決したいのか?(β版)
by
Naohiro Fujie
80 slides
26.6K views
オンラインゲームの仕組みと工夫
by
Yuta Imai
56 slides
889.1K views
ADRという考えを取り入れてみて
by
infinite_loop
49 slides
3.1K views
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
by
CODE BLUE
55 slides
6.2K views
Fluentdのお勧めシステム構成パターン
by
Kentaro Yoshida
43 slides
51.8K views
ウェブセキュリティの常識
by
Hiroshi Tokumaru
39 slides
31.7K views
イミュータブルデータモデルの極意
by
Yoshitaka Kawashima
28 slides
29.1K views
SQL大量発行処理をいかにして高速化するか
by
Shogo Wakayama
27 slides
61K views
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
by
Amazon Web Services Japan
73 slides
63.7K views
What's new in Spring Batch 5
by
ikeyat
85 slides
12.7K views
Proxy War
by
zaki4649
106 slides
15.2K views
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
by
Amazon Web Services Japan
42 slides
6.2K views
XSS再入門
by
Hiroshi Tokumaru
31 slides
89K views
AWSのログ管理ベストプラクティス
by
Akihiro Kuwano
57 slides
79.8K views
SPAセキュリティ入門~PHP Conference Japan 2021
by
Hiroshi Tokumaru
107 slides
112.2K views
例外設計における大罪
by
Takuto Wada
37 slides
76.9K views
HTTP2 最速実装 〜入門編〜
by
Kaoru Maeda
42 slides
32.2K views
Javaのログ出力: 道具と考え方
by
Taku Miyakawa
67 slides
79.1K views
Serverless時代のJavaについて
by
Amazon Web Services Japan
90 slides
13.6K views
今だから!Amazon CloudFront 徹底活用
by
Yasuhiro Araki, Ph.D
36 slides
8.2K views
Viewers also liked
PPTX
Management for Security Life Cycle (日本語版)
by
Akitsugu Ito
72 slides
10.8K views
PPT
Ipsj77フォレンジック研究動向
by
UEHARA, Tetsutaro
25 slides
9.9K views
PDF
SECCON CTF セキュリティ競技会コンテスト開催について
by
takesako
18 slides
12.1K views
PPTX
自分でできるWebアプリケーション脆弱性診断 - デブサミ2010
by
Sen Ueno
44 slides
19.3K views
PPTX
Metasploitでペネトレーションテスト
by
super_a1ice
49 slides
23.8K views
PDF
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコム
by
Go Sueyoshi (a.k.a sue445)
73 slides
21.3K views
PPTX
[CEDEC2017] LINEゲームのセキュリティ診断手法
by
LINE Corporation
69 slides
12.6K views
PPTX
osc2016do ひげで学ぶWebアプリケーションに潜むリスク
by
Ierae Security
25 slides
5.5K views
PPTX
[BurpSuiteJapan]Burp Suite回答編
by
Burp Suite Japan User Group
40 slides
6.4K views
PDF
初心者向けインターネットの仕組みと8/25の障害についての説明
by
Ken SASAKI
18 slides
15.2K views
PPTX
脱RESTful API設計の提案
by
樽八 仲川
53 slides
14.4K views
PDF
ノリとその場の勢いでPocを作った話
by
zaki4649
42 slides
6.1K views
PDF
[AVTOKYO 2017] What is red team?
by
Tomohisa Ishikawa, CISSP, CSSLP, CISA, CISM, CFE
37 slides
5.7K views
PDF
CpawCTF 勉強会 Network
by
Takaaki Hoyo
33 slides
21.2K views
PDF
SSL/TLSの基礎と最新動向
by
shigeki_ohtsu
118 slides
57.4K views
Management for Security Life Cycle (日本語版)
by
Akitsugu Ito
72 slides
10.8K views
Ipsj77フォレンジック研究動向
by
UEHARA, Tetsutaro
25 slides
9.9K views
SECCON CTF セキュリティ競技会コンテスト開催について
by
takesako
18 slides
12.1K views
自分でできるWebアプリケーション脆弱性診断 - デブサミ2010
by
Sen Ueno
44 slides
19.3K views
Metasploitでペネトレーションテスト
by
super_a1ice
49 slides
23.8K views
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコム
by
Go Sueyoshi (a.k.a sue445)
73 slides
21.3K views
[CEDEC2017] LINEゲームのセキュリティ診断手法
by
LINE Corporation
69 slides
12.6K views
osc2016do ひげで学ぶWebアプリケーションに潜むリスク
by
Ierae Security
25 slides
5.5K views
[BurpSuiteJapan]Burp Suite回答編
by
Burp Suite Japan User Group
40 slides
6.4K views
初心者向けインターネットの仕組みと8/25の障害についての説明
by
Ken SASAKI
18 slides
15.2K views
脱RESTful API設計の提案
by
樽八 仲川
53 slides
14.4K views
ノリとその場の勢いでPocを作った話
by
zaki4649
42 slides
6.1K views
[AVTOKYO 2017] What is red team?
by
Tomohisa Ishikawa, CISSP, CSSLP, CISA, CISM, CFE
37 slides
5.7K views
CpawCTF 勉強会 Network
by
Takaaki Hoyo
33 slides
21.2K views
SSL/TLSの基礎と最新動向
by
shigeki_ohtsu
118 slides
57.4K views
Similar to 徳丸本に載っていないWebアプリケーションセキュリティ
PDF
安全なPHPアプリケーションの作り方2013
by
Hiroshi Tokumaru
68 slides
248.2K views
PPTX
安全なPHPアプリケーションの作り方2014
by
Hiroshi Tokumaru
46 slides
55.4K views
PDF
Webアプリ開発者のためのHTML5セキュリティ入門
by
Muneaki Nishimura
71 slides
45.1K views
PPT
セキュアプログラミング講座
by
minoru-ito
34 slides
2K views
PDF
徳丸本ができるまで
by
Hiroshi Tokumaru
47 slides
5K views
PDF
[デブサミ2012]趣味と実益の脆弱性発見
by
Yosuke HASEGAWA
69 slides
6.8K views
PPT
20090218 第5回「PhpによるWebアプリケーションのセキュリティ入門」
by
Hiromu Shioya
33 slides
2.5K views
PDF
これからHTML5を書く人のためのセキュリティ - HTML5など勉強会
by
yoshinori matsumoto
46 slides
6.1K views
PPTX
HTML5 Web アプリケーションのセキュリティ
by
彰 村地
91 slides
1.6K views
ODP
ライブコーディングとデモで理解するWebセキュリティの基礎
by
Takahisa Kishiya
53 slides
2K views
PDF
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
by
Hiroshi Tokumaru
99 slides
14.7K views
PPTX
文字コードの脆弱性はこの3年間でどの程度対策されたか?
by
Hiroshi Tokumaru
32 slides
32.9K views
PPTX
Pjax1
by
Kindai University
18 slides
1K views
PDF
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
by
Hiroshi Tokumaru
41 slides
7.3K views
PPTX
安全なPHPアプリケーションの作り方2016
by
Hiroshi Tokumaru
75 slides
37.1K views
PPTX
ウェブアプリのセキュリティをちゃんと知ろう (毎週のハンズオン勉強会の資料)
by
ひとし あまの
31 slides
9.3K views
PDF
Beginning Java EE 6 勉強会(7) #bje_study
by
ikeyat
38 slides
5.1K views
PDF
PHPでセキュリティを真面目に考える
by
Takuya Sato
80 slides
35.1K views
PPTX
エンジニアという職業について
by
Hisatoshi Kikumoto
77 slides
2.5K views
PPTX
Browser andsecurity2015
by
彰 村地
60 slides
7.8K views
安全なPHPアプリケーションの作り方2013
by
Hiroshi Tokumaru
68 slides
248.2K views
安全なPHPアプリケーションの作り方2014
by
Hiroshi Tokumaru
46 slides
55.4K views
Webアプリ開発者のためのHTML5セキュリティ入門
by
Muneaki Nishimura
71 slides
45.1K views
セキュアプログラミング講座
by
minoru-ito
34 slides
2K views
徳丸本ができるまで
by
Hiroshi Tokumaru
47 slides
5K views
[デブサミ2012]趣味と実益の脆弱性発見
by
Yosuke HASEGAWA
69 slides
6.8K views
20090218 第5回「PhpによるWebアプリケーションのセキュリティ入門」
by
Hiromu Shioya
33 slides
2.5K views
これからHTML5を書く人のためのセキュリティ - HTML5など勉強会
by
yoshinori matsumoto
46 slides
6.1K views
HTML5 Web アプリケーションのセキュリティ
by
彰 村地
91 slides
1.6K views
ライブコーディングとデモで理解するWebセキュリティの基礎
by
Takahisa Kishiya
53 slides
2K views
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
by
Hiroshi Tokumaru
99 slides
14.7K views
文字コードの脆弱性はこの3年間でどの程度対策されたか?
by
Hiroshi Tokumaru
32 slides
32.9K views
Pjax1
by
Kindai University
18 slides
1K views
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
by
Hiroshi Tokumaru
41 slides
7.3K views
安全なPHPアプリケーションの作り方2016
by
Hiroshi Tokumaru
75 slides
37.1K views
ウェブアプリのセキュリティをちゃんと知ろう (毎週のハンズオン勉強会の資料)
by
ひとし あまの
31 slides
9.3K views
Beginning Java EE 6 勉強会(7) #bje_study
by
ikeyat
38 slides
5.1K views
PHPでセキュリティを真面目に考える
by
Takuya Sato
80 slides
35.1K views
エンジニアという職業について
by
Hisatoshi Kikumoto
77 slides
2.5K views
Browser andsecurity2015
by
彰 村地
60 slides
7.8K views
More from Hiroshi Tokumaru
PPTX
ウェブセキュリティのありがちな誤解を解説する
by
Hiroshi Tokumaru
64 slides
5.8K views
PPTX
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
by
Hiroshi Tokumaru
27 slides
1.8K views
PPT
SQLインジェクション再考
by
Hiroshi Tokumaru
31 slides
1.2K views
PPTX
徳丸本VMに脆弱なWordPressを導入する
by
Hiroshi Tokumaru
8 slides
933 views
PPTX
introduction to unsafe deserialization part1
by
Hiroshi Tokumaru
19 slides
558 views
PPTX
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
by
Hiroshi Tokumaru
50 slides
3.2K views
PPTX
XXE、SSRF、安全でないデシリアライゼーション入門
by
Hiroshi Tokumaru
48 slides
4K views
PPTX
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
by
Hiroshi Tokumaru
12 slides
41.7K views
PPTX
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
by
Hiroshi Tokumaru
84 slides
10.3K views
PPTX
Railsエンジニアのためのウェブセキュリティ入門
by
Hiroshi Tokumaru
79 slides
24.4K views
PPTX
安全なWebアプリケーションの作り方2018
by
Hiroshi Tokumaru
61 slides
30.5K views
PPTX
秀スクリプトの話
by
Hiroshi Tokumaru
51 slides
31.7K views
PPTX
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
by
Hiroshi Tokumaru
42 slides
30.7K views
PDF
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
by
Hiroshi Tokumaru
86 slides
72.5K views
PPTX
ウェブセキュリティの最近の話題早分かり
by
Hiroshi Tokumaru
39 slides
71.8K views
PPTX
セキュリティの都市伝説を暴く
by
Hiroshi Tokumaru
56 slides
88.8K views
PPTX
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
by
Hiroshi Tokumaru
55 slides
53K views
PPTX
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
by
Hiroshi Tokumaru
56 slides
9.2K views
PPTX
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
by
Hiroshi Tokumaru
49 slides
75.7K views
PPTX
セキュアコーディング方法論再構築の試み
by
Hiroshi Tokumaru
58 slides
39K views
ウェブセキュリティのありがちな誤解を解説する
by
Hiroshi Tokumaru
64 slides
5.8K views
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
by
Hiroshi Tokumaru
27 slides
1.8K views
SQLインジェクション再考
by
Hiroshi Tokumaru
31 slides
1.2K views
徳丸本VMに脆弱なWordPressを導入する
by
Hiroshi Tokumaru
8 slides
933 views
introduction to unsafe deserialization part1
by
Hiroshi Tokumaru
19 slides
558 views
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
by
Hiroshi Tokumaru
50 slides
3.2K views
XXE、SSRF、安全でないデシリアライゼーション入門
by
Hiroshi Tokumaru
48 slides
4K views
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
by
Hiroshi Tokumaru
12 slides
41.7K views
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
by
Hiroshi Tokumaru
84 slides
10.3K views
Railsエンジニアのためのウェブセキュリティ入門
by
Hiroshi Tokumaru
79 slides
24.4K views
安全なWebアプリケーションの作り方2018
by
Hiroshi Tokumaru
61 slides
30.5K views
秀スクリプトの話
by
Hiroshi Tokumaru
51 slides
31.7K views
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
by
Hiroshi Tokumaru
42 slides
30.7K views
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
by
Hiroshi Tokumaru
86 slides
72.5K views
ウェブセキュリティの最近の話題早分かり
by
Hiroshi Tokumaru
39 slides
71.8K views
セキュリティの都市伝説を暴く
by
Hiroshi Tokumaru
56 slides
88.8K views
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
by
Hiroshi Tokumaru
55 slides
53K views
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
by
Hiroshi Tokumaru
56 slides
9.2K views
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
by
Hiroshi Tokumaru
49 slides
75.7K views
セキュアコーディング方法論再構築の試み
by
Hiroshi Tokumaru
58 slides
39K views
徳丸本に載っていないWebアプリケーションセキュリティ
1.
PHPカンファレンス北海道 徳丸本に載っていない
Webアプリケーションセキュリティ 2012年4月21日 徳丸 浩
2.
本日お話しする内容 • キャッシュからの情報漏洩に注意 • クリックジャッキング入門 •
Ajaxセキュリティ入門 • ドリランド カード増殖祭りはこうしておこった…かも? Copyright © 2012 HASH Consulting Corp. 2
3.
徳丸浩の自己紹介 • 経歴
– 1985年 京セラ株式会社入社 – 1995年 京セラコミュニケーションシステム株式会社(KCCS)に出向・転籍 – 2008年 KCCS退職、HASHコンサルティング株式会社設立 • 経験したこと – 京セラ入社当時はCAD、計算幾何学、数値シミュレーションなどを担当 – その後、企業向けパッケージソフトの企画・開発・事業化を担当 – 1999年から、携帯電話向けインフラ、プラットフォームの企画・開発を担当 Webアプリケーションのセキュリティ問題に直面、研究、社内展開、寄稿など を開始 – 2004年にKCCS社内ベンチャーとしてWebアプリケーションセキュリティ事業を立 ち上げ • その他 – 1990年にPascalコンパイラをCabezonを開発、オープンソースで公開 「大学時代のPascal演習がCabezonでした」という方にお目にかかることも • 現在 – HASHコンサルティング株式会社 代表 http://www.hash-c.co.jp/ – 京セラコミュニケーションシステム株式会社 技術顧問 http://www.kccs.co.jp/security/ – 独立行政法人情報処理推進機構2012 HASH Consulting Corp. http://www.ipa.go.jp/security/ Copyright © 非常勤研究員 3
4.
本を書きました
2011年3月5日初版第1刷 2011年12月13日 初版第5刷 Copyright © 2012 HASH Consulting Corp. 4
5.
キャッシュからの情報漏洩に注意
Copyright © 2012 HASH Consulting Corp. 5
6.
Webアプリケーションとキャッシュ • フレームワークのキャッシュ機能 • リバースプロキシ •
フォワードプロキシ • ブラウザのキャッシュ機能 • キャッシュは、Webアプリケーションの負荷を軽減し、 応答を高速化するために用いられる • サイト運営側が設置するキャッシュと、閲覧側(ISP等 を含む)が設置するものがある Copyright © 2012 HASH Consulting Corp. 6
7.
キャッシュからの情報漏洩とは? • いわゆる「別人問題」 • 秘密情報がキャッシュされて、それを別人が見る状況
– 最初のアクセスは正当な権限あり →表示内容がキャッシュされるに – 次のアクセスは権限のないユーザ →同一URLを参照すると、キャッシュされた情報を閲覧してし まう • 続きはデモで Copyright © 2012 HASH Consulting Corp. 7
8.
Demoの構成 ブラウザ
OpenPNE 3.4.12.1 PROXY squid PHP/MySQL Ubuntu 10.04LTS refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|?) 0 0% 0 refresh_pattern (Release|Package(.gz)*)$ 0 20% 2880 refresh_pattern . 1440 20% 4320 override-lastmod ※デモ環境では、WebサーバーとProxyサーバーは同一VM上で稼 働 Copyright © 2012 HASH Consulting Corp. 8
9.
サトーさん
タナカさん Demo Copyright © 2012 HASH Consulting Corp. 9
10.
ブラウザキャッシュのデモ
デフォルト Copyright © 2012 HASH Consulting Corp. 10
11.
そもそもこれは脆弱性なのか? • PROXY設定の問題ではないのか?
– PROXY設定の問題とは言い切れない – squidの標準的な機能の範囲である – PROXY設定の基準が明確にあるわけではない • RFC2616 13.4 Response Cacheability – (原文)A response received with a status code of 200, 203, 206, 300, 301 or 410 MAY be stored by a cache and used in reply to a subsequent request, subject to the expiration mechanism, unless a cache-control directive prohibits caching. – (日本語訳)200, 203, 206, 300, 301, 410 のステータスコードと 共に受信されたレスポンスは、cache-control 指示子がキャッ シングを禁止していなければ、キャッシュによって保存され、 以降のリクエストへの応答に使用され、期限メカニズムに従う 事ができる。 http://tools.ietf.org/html/rfc2616#section-13.4 http://www.studyinghttp.net/cgi-bin/rfc.cgi?2616#Sec13.1.3 より引用 Copyright © 2012 HASH Consulting Corp. 11
12.
ブラウザのキャッシュはどうか • ブラウザのキャッシュも同様だが • そもそも、ブラウザを共有することが問題 •
Windows95,98,MEの時代ならともかく、2012年の時点 では、端末は共有しても、ユーザは別にすべし。そうす れば問題は発生しない • つまり、「はてなブックマークでのデモ事例」は許容可 能 • とはいえ、Webサイト提供者としては対策することが望 ましい Copyright © 2012 HASH Consulting Corp. 12
13.
対策 • HTTPレスポンスヘッダで「キャッシュを禁止するヘッダ」を応
答することが根本対策 • セキュアプログラミング講座には… 1. Cache-Control: private Webサーバから返されるコンテンツがただ一人のユーザのためのものであること を示す。このコンテンツは、複数のユーザが共有されるキャッシュに記録されるべ きではないことを表している。ただし、これは、一人のユーザのみが利用するキャ ッシュ(ブラウザのキャッシュ等)への記録を禁じるものではない。Cache- Control: private のみが指定されている場合、何らかのキャッシュへの記録が行わ れるおそれがある。 2. Cache-Control: no-store このヘッダは、Webサーバから返されてくるコンテンツをキャッシュに記録する な、という指示である。 3. Cache-Control: no-cache 一見「キャッシュを使うな」のように見えるこのヘッダが実際に意味するところ は少々ニュアンスが異なる。このヘッダの意味は、いちどキャッシュに記録された コンテンツは、現在でも有効か否かを本来のWebサーバに問い合わせて確認がと れない限り再利用してはならない、という意味である。 4. Cache-Control: must-revalidate このヘッダは、キャッシュに記録されているコンテンツが現在も有効であるか否 かをWebサーバに必ず問い合わせよ、という指示である。 http://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/405.html より引用 13
14.
対策(続き) • HTTP/1.0対策として –
Pragma: no-cache – 非標準の方法であり、確実なものではない • その他の手法 – 「現場の知恵」としてURL(クエリ文字列)にランダムな数字 を付加することが行われる • 例: http://example.jp/private.php?rand=8314329428479210 – HTTPSにする • 通常のPROXYはHTTPSのメッセージをキャッシュしない(できない) • リバースPROXY、ブラウザはキャッシュする可能性があるので過信し ないこと – テストする • 別ユーザ or 非ログイン状態で、同じURLをアクセスする Copyright © 2012 HASH Consulting Corp. 14
15.
乱数をURLにつける例 Copyright © 2012
HASH Consulting Corp. 15
16.
クリックジャッキング入門 Copyright
© 2012 HASH Consulting Corp. 16
17.
クリックジャッキング攻撃 • ターゲットの画面をiframe上で「透明に」表示する • その下にダミーの画面を表示させる。ユーザにはダミー
の画面が透けて見える • 利用者がダミーの画面上のボタンを押すと、実際には全 面のターゲット画面のボタンが押される 本当の画面(前面、透明) ダミーの画面(後面) • 続きはデモで Copyright © 2012 HASH Consulting Corp. 17
18.
クリックジャッキングの対策 • クリックジャッキングの影響はクロスサイト・リクエス
トフォージェリ(CSRF)と同等 – ユーザの意識とは無関係に、ユーザの権限で操作が行われる • クリックジャッキングされると困るページには、X- FRAME-OPTIONSヘッダを指定する(徳丸本P63) – frame/iframeを禁止して良い場合 header('X-FRAME-OPTIONS', 'DENY'); – frame/iframeを禁止できないが単一ホストの場合 header('X-FRAME-OPTIONS', 'SAMEORIGIN'); • CSRF対策のトークン発行しているページが対象となる • メタ要素によるX-FRAME-OPTIONS指定は無効です。 徳丸本第3刷までの記述は間違いです(_ _) Copyright © 2012 HASH Consulting Corp. 18
19.
CSRF対策との関係
入力/確認画面 更新・実行画面 更新してよろしいですか? 更新しました 実行 トップへ •トークン埋め込み •トークン確認 •X-FRAME-OPTIONS ヘッダ出力 トークン埋め込みしている画面に、X-FRAME- OPTIONS ヘッダを出力する(全ての画面で出力しても良い) Copyright © 2012 HASH Consulting Corp. 19
20.
Ajaxセキュリティ入門 Copyright ©
2012 HASH Consulting Corp. 20
21.
Ajaxはあたりまえになったけど、 Ajaxのセキュリティは当たり前に なってない
Copyright © 2012 HASH Consulting Corp. 21
22.
たとえば入門書の問題 Copyright ©
2012 HASH Consulting Corp. 22
23.
とある入門書のサンプル
Copyright © 2012 HASH Consulting Corp. 23 よくわかるJavaScriptの教科書、たにぐちまこと著、2012 P228より引用
24.
この本です
24
25.
動かしてみる Copyright © 2012
HASH Consulting Corp. 25
26.
結果 Copyright © 2012
HASH Consulting Corp. 26
27.
JSON作成をPHPに 生成されるJSON [{"image":"img/1.jpg","image_big":"i mg/1_big.jpg","caption":"u30adu30e 3u30d7u30b7u30e7u30f31"}]
Copyright © 2012 HASH Consulting Corp. 27
28.
結果 Copyright © 2012
HASH Consulting Corp. 28
29.
データにJavaScriptを入れてみる 生成されるJSON [{"image":"img/1.jpg","image_big":"i mg/1_big.jpg","caption":"u30adu30e 3u30d7u30b7u30e7u30f31<script>ale rt(1)</script>"}]
Copyright © 2012 HASH Consulting Corp. 29
30.
結果 Copyright © 2012
HASH Consulting Corp. 30
31.
脆弱性の原因と対策 • htmlメソッドによりHTMLテキストを設定しているにも
関わらず、データをHTMLエスケープしていない • ただし、元文献は固定テキストなので、必ずしも脆弱性 とは言えない • HTMLエスケープするタイミングは、以下の候補がある – ブラウザでレンダリングする箇所 – JSONを組み立てる段階で、あらかじめHTMLエスケープして おく Copyright © 2012 HASH Consulting Corp. 31
32.
次の話題 evalインジェクション Copyright ©
2012 HASH Consulting Corp. 32
33.
JSON解釈をevalでやってみる
Copyright © 2012 HASH Consulting Corp. 33
34.
JSON作成も自前で <?php $image
= 'img/1.jpg'; $image_big = 'img/1_big.jpg'; $caption = 'キャプション2'; $a = '[{"image":"' . $image . '","image_big":"' . $image_big . '","caption":"' . $caption . '"}]'; echo $a; 生成されるJSON [{"image":"img/1.jpg","image_big":"img/1_b ig.jpg","caption":"キャプション2 "}] Copyright © 2012 HASH Consulting Corp. 34
35.
結果 Copyright © 2012
HASH Consulting Corp. 35
36.
データにJavaScriptを入れてみる <?php $image
= 'img/1.jpg'; $image_big = 'img/1_big.jpg'; $caption = 'キャプション2x"+alert("1")+"'; $a = '[{"image":"' . $image . '","image_big":"' . $image_big . '","caption":"' . $caption . '"}]'; echo $a; 生成されるJSON [{"image":"img/1.jpg","image_big": "img/1_big.jpg","caption": "キャプション2x"+alert("1")+""}] Copyright © 2012 HASH Consulting Corp. 36
37.
結果 Copyright © 2012
HASH Consulting Corp. 37
38.
脆弱性の原因と対策 • JSON/JavaScriptとしての適切なエスケープを怠ってい
ることが根本原因 • 根本単位策:JSON生成を自前でしないで、信頼できる ライブラリを用いる • 保険的対策(強く推奨):evalでJSONを解釈しない。 Copyright © 2012 HASH Consulting Corp. 38
39.
次の話題 json.phpを直接ブラウズしてみる
Copyright © 2012 HASH Consulting Corp. 39
40.
データを少しいじりましょう Copyright
© 2012 HASH Consulting Corp. 40
41.
さまざまなブラウザでの結果 Copyright
© 2012 HASH Consulting Corp. 41
42.
で、IE9は? Copyright © 2012
HASH Consulting Corp. 42
43.
大丈夫なのか Copyright © 2012
HASH Consulting Corp. 43
44.
でも、だめ http://example.jp/json.php/a.html
Copyright © 2012 HASH Consulting Corp. 44
45.
Copyright © 2012
HASH Consulting Corp. 45 http://d.hatena.ne.jp/hasegawayosuke/20110106/p1 より引用
46.
Copyright © 2012
HASH Consulting Corp. 46 http://d.hatena.ne.jp/hasegawayosuke/20110106/p1 より引用
47.
X-Content-Type-Options: nosniff を入れてみる
生成される JSON X-Content-Type-Options: nosniff Content-Length: 125 Content-Type: application/json; charset=utf8 [{"image":"img/1.jpg","image_big":"img/1_b ig.jpg","caption":"u30adu30e3u30d7u30b7 u30e7u30f31<body onload=alert(1)>"}] Copyright © 2012 HASH Consulting Corp. 47
48.
IE9だとOK(IE8以上) Copyright © 2012
HASH Consulting Corp. 48
49.
IE7だとだめ Copyright © 2012
HASH Consulting Corp. 49
50.
50
51.
対策 • 必須対策(全ブラウザ共通)
– レスポンスがブラウザによりtext/htmlと解釈されないようにす る X-Content-Type-Options: nosniff Content-Type: application/json; charset=utf8 • IE6,7対策 – IE7以前をサポートしない – ブラウザからの直接リクエストを受け付けない – 「<」、「>」などもエスケープする Copyright © 2012 HASH Consulting Corp. 51
52.
Json_encodeのパラメータを追加 生成される JSON [{"image":"img/1.jpg","image_big":"img/1_bi g.jpg","caption":"u30adu30e3u30d7u30b7u3 0e7u30f31u003Cbody onload=alert(1)u003E"}]
Copyright © 2012 HASH Consulting Corp. 52
53.
今度は大丈夫 Copyright © 2012
HASH Consulting Corp. 53
54.
次の話題はJSONハイジャック
Copyright © 2012 HASH Consulting Corp. 54
55.
Firefox3などで発現。現在の主要ブ
ラウザでは対策されている Copyright © 2012 HASH Consulting Corp. 55
56.
JSONハイジャックとは • JSONを罠サイトからscript要素で読み出す • 利用者のブラウザからは、正規のCookieが送信されるの
で、認証ずみの状態でJSONが取得できる • なんらかの手法で、このJSONの中味を読むのがJSONハ イジャック これは罠サイト <script> ここにJSONを読み出す仕掛けを置く // script要素で読み出したJSON [{"name":"Yamada", "mail":"yama@example.jp"}] </script> Copyright © 2012 HASH Consulting Corp. 56
57.
サンプルスクリプト(罠) Copyright ©
2012 HASH Consulting Corp. 57
58.
結果 Copyright © 2012
HASH Consulting Corp. 58
59.
Firefox11.0だと問題なし Copyright ©
2012 HASH Consulting Corp. 59
60.
Androidの標準ブラウザでハイジャック成功
Xperia ARC(SO-01C) Android 2.3.4 でキャプチャ Galaxy Nexus Android 4.0.3では取得できず Copyright © 2012 HASH Consulting Corp. 60
61.
対策 • script要素からのリクエストにはレスポンスを返さない
ようにする – XMLHttpRequestからのリクエストに特別なヘッダを入れてお き、JSON提供側でチェックするなど Jqueryの以下のヘッダを使っても良いかも X-Requested-With: XMLHttpRequest – POSTにのみ応答(個人的には好みません) • JSONデータを、JavaScriptとして実行できない形にする – 1行目に for(;;) ; を置く(個人的には好みません) – JSONデータをJavaScriptとして実行できない形にする(同 上) • JSONハイジャック可能なブラウザを使わない(利用者 側でとれる対策) Copyright © 2012 HASH Consulting Corp. 61
62.
まとめ • HTML5の話題が盛り上がる中、HTML4のAjaxのセキュ
リティが当たり前になっていない • 分かっている人と分かってない人の二極化が進んでい る? • どうすればよいか、よく考えよう • CSRF等もふつーに発生するので、ふつーに対策するこ と Copyright © 2012 HASH Consulting Corp. 62
63.
ドリランド カード増殖祭りはこうし ておこった…かも?
Copyright © 2012 HASH Consulting Corp. 63
64.
64 https://help.gree.jp/app/answers/detail/a_id/3231 より引用
65.
こんな感じだった? 必要なもの 携帯もしくはPCを二台 gleeアカウント二つ 二台の機器でそれぞれのgleeアカウントでログインしてドリ ランド起動後お互いでトレードさせる トレード(受け取りはしない)が終わったら片方の機器はログア ウトして二つの機器のアカウントを同じにする それぞれトレード品受け取り画面にして受け取るボタン同時 押し カード毎にID振って無いのかよ。。。。 馬鹿じゃねぇの? >>277 ちゃんとふってあるけど、トレード時にトレードされる側と する側で ちゃんとアイテムIDが変わる仕様だったw
65 http://jin115.com/archives/51849925.html より引用
66.
こんな感じだった? DBからトレード元のカードのデータを読み取る 新しいIDをつけてトレード先に保存する トレード元のデータを削除する
http://bakera.jp/ebi/topic/4722 より引用 66
67.
作ってみた // トレードするカードのidと新オーナーのidがパラメータ $item_id =
(int)$_GET['item_id']; $newowner = (int)$_GET['newowner']; // カード情報を取得 $stmt = $pdo->query( "SELECT * FROM cards WHERE item_id=$item_id"); $row = $stmt->fetch(PDO::FETCH_ASSOC); $kind = $row['kind']; $owner_id = $row['owner_id']; // トレード後のカードを作成 $stmt = $pdo->exec("INSERT INTO cards VALUES (NULL, $kind,". "$newowner, $item_id, $owner_id, NOW())"); // 元のカードを削除 $stmt = $pdo->exec( "DELETE FROM cards WHERE item_id= $item_id "); ※デモスクリプトはプレースホルダをちゃんと使っています! Copyright © 2012 HASH Consulting Corp. 67
68.
DEMO Copyright © 2012
HASH Consulting Corp. 68
69.
中ではこうなった Copyright © 2012
HASH Consulting Corp. 69
70.
対策 • トランザクションを使う –
PDOの場合は、begeinTransaction ~ commit / rollbackの間 • ロック(排他制御) – SELECT … FOR UPDATE など • 上記の両方が必須 – トランザクションを使うだけでは排他制御にならない場合が多 い 厳密にはDB依存 および モードに依存 • 「クリティカルセクション」に注意 – このスクリプトの場合は、SELECT ~ DELETE FROMまでは クリティカルセクションであり、同一カードIDについては並行 動作してはいけない • ちゃんとRDBを基礎から勉強しよう Copyright © 2012 HASH Consulting Corp. 70
71.
トランザクションと行ロックで対策 try {
$pdo->beginTransaction(); $item_id = (int)$_GET['item_id']; $stmt = $pdo->query( "SELECT * FROM cards WHERE item_id=$item_id FOR UPDATE"); $row = $stmt->fetch(PDO::FETCH_ASSOC); if (! $row) throw new DataNotFoundException(); $kind = $row['kind']; $owner_id = $row['owner_id']; $stmt = $pdo->exec("INSERT INTO cards VALUES (NULL, $kind,". "$newowner, $item_id, $owner_id, NOW())"); $stmt = $pdo->exec( "DELETE FROM cards WHERE item_id=$item_id"); $pdo->commit(); } catch (DataNotFoundException $e) { $pdo->rollback(); } catch (Exception $e) { // …… ※上記は概要でありデモスクリプトはプレースホルダをちゃんと使っています! Copyright © 2012 HASH Consulting Corp. 71
72.
中ではこうなる Copyright © 2012
HASH Consulting Corp. 72
73.
トランザクションを難しくする要因 • NoSQL • Memcached •
データベースのパーティショニング、シャーディング • データベースのレプリケーション • LDAP、ファイル等トランザクション非対応のストレー ジ • … • 完全なロールバックが難しい場合でも、排他制御だけな ら比較的容易に実装できる場合がある Copyright © 2012 HASH Consulting Corp. 73
74.
まとめ • 徳丸本に載っていない脆弱性をいくつか紹介しました • 「徳丸本に載っていることだけやっていればおk」ではない •
プログラミングの基礎(並行処理、トランザクション、etc)を勉 強しよう • そうは言っても、まずは「徳丸本」のマスターから始めよう(宣 伝) Copyright © 2012 HASH Consulting Corp. 74
75.
Thank you!
Copyright © 2012 HASH Consulting Corp. 75