- OSコマンドインジェクションは本当にめずらしい
- 釣りでいうとイトウ(本人談)
- キャッシュからの情報漏洩
- リバースプロキシ、フォワードプロキシ、ブラウザのキャッシュ機能
- アプリケーションの負荷軽減
- 「別人問題」
- 原因のひとつがキャッシュ
- Squidのキャッシュ
- override-lastmod
- OpenPNE
- サトーさん
- /diary/2 自分の日記
- 自分の日記が見れなくなる場合も
- タナカさん
- /diary/1 自分の日記
- ブラウザのキャッシュ
- はてなブックマーク(プライベート)
- ログイン→ログアウト
- /ockegthm2 見えた
- ブラウザのキャッシュが残っていたから
- ブラウザを再起動しても見えた
- ブラウザを共有することなんてない
- 許容してもいいかも
- 対策
- セキュアプログラミング講座より
- Cache-Control: no-store
- BK
- HTTP/1.0
- Pragma: no-cache
- クエリにランダムな数字
- ANAのサイト
- /fs/domjpmenu?rand=20120421131830
- 見守ってあげて
- クリックジャッキング
- iframeの上で「透明に」表示
- demo
- twitter
- 「僕本当はPHP嫌いなんだ #phpcondo」
- 画像を重ねる
- 後ろのボタンを押してしまう
- Firefox 3
- …
- x-frame-options: deny 禁止して良い場合
- x-frame-options: sameorigin
- CSRFとの関係
- トークン埋め込み
- ついでにx-frame-optionsヘッダ出力
- Ajaxセキュリティ入門
- 入門書の問題
- '<p>' + json[i].caption + '</p>'
- データにJavaScriptを入れてみる
- XSS
- 原因と対策
- HTMLエスケープ
- evalインジェクション
- jQueryは安全にやってくれる
- $.get ($.getJSONではない)
- eval(text)
- データにJavaScriptを入れてみる
- ""+alert("1")+""
- XSS
- 対策
- 自前でJSON生成するな!
- evalでJSON解釈するな!
- json.phpを直接ブラウズ
- "キャプション1<body onload=alert(1)>"
- Content-Type: application/json
- IEだけ
- IE9
- URLに/a.htmlをつけると…
- HTMLとして解釈されてしまう
- X-Content-Type-Options: nosniff つけないのは死ね!
- IE7だとだめ
- 対策
- nosniff
- application/json; charset=utf8
- IE7
- <, >もエスケープ
- \u003Cでエスケープされる
- HTMLとして解釈されているけど、JavaScriptとしては実行されない
- JSONハイジャック
- 別ドメインのJSONを罠サイトからscript要素で読み出す
- 正規のCookieが送信される→JSONが取得できる
- ソース上に置いてあるだけなので大丈夫
- Object.prototype.__defineSetter__
- 読めてしまう!
- Firefox 11.0だと問題なし
- Androidの標準ブラウザでハイジャック成功
- 対策
- script要素からのリクエストにはレスポンスを変えさない
- x-requested-with: xmlhttprequest
- POST? 好まない
- for(;;)を置く? 好まない
- ドリランド増殖祭
- demo(こうだったかも)
- 鳥ランド カード交換
- select, insert, 番号振りなおす, 元カードをdelete
- 同時にやる
- 増えた!
- 対策
- トランザクション
- ロック
- SELECT .. FOR UPDATE
- 同時にやってみる
- 片方はSELECTしたけど読めずに終わる
- トランザクションは学ぶの難しいよね
- NoSQL, Memcached, DBのパーティショニングやシャーディング
- レプリケーション, LDAPやファイルなどのトランザクション未対応のもの