- 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やファイルなどのトランザクション未対応のもの