第12回 Webアプリケーションの入力データを悪用した攻撃(1)
クロスサイトスクリプティング
XSSゆうらしい。クロスがバッテンか...
入力チェックがタコな動的なWebページを生成して表示するサイトに対する攻撃だ。
例えば、ユーザ登録時に住所などチェックが甘そうなところに、
<script>alert('hello')</script>などを入力する。
ユーザ登録結果画面でこのコードをそのまま表示すると、JavaScriptが実行される。
上記の場合は、helloというポップアップが表示される。
ということは、JavaScriptで実行できることならなんでもできるということだ。
入力内容(ユーザ登録ならID・パスワードもあるでしょ)盗むなんてことも簡単。
情報(cookieとか)を盗むだけではなく、他への攻撃の踏み台にされることもある。
ajaxなんて仕込まれた日にはサーバパンクさせるのも簡単。
まずいの。
まずいので、通常は入力されたJavaScriptコードは実行できないようにしてる。
入力できないではなく。(エラーにはしない。)
なので、<>"'&あたりをHTMLエンコードしとく。
この本ではサニタイジングゆうてるけど...なんだろね。聞いたことない。
あと、>→& 書いてあるとこあるけど、これは >→>の間違い。でしょ。
JavaScriptだけでなく、入力したデータを処理する場合きちんとエスケープする必要がある。
例えば、単純に"(ダブルクォーテーション)を文字として受け入れて、
出力結果として、<script>alert(""");</script>(真ん中の"がそれ)
なんてすると、JavaScriptエラーとなる。
SQL文作るところでも同じことが起きる。
ので、都合の悪い文字は片っ端からエスケープ(をつける)しとくのがふつーです。
どんなものが都合が悪いかはシステム(言語)によっても違うので、一概には言えませんが。
ちなみにgooブログはエスケープしてるみたいです。
この間¥(の半角文字)を入れたら消えてました。
単純削除されてます。
JavaScriptは...画面に出てますな。コードが。
しかたないので、エスケープして入力しときます。
この項長いので二回に分けます。
次回はSQLインジェクションとOSコマンドインジェクションです。
クロスサイトスクリプティング
XSSゆうらしい。クロスがバッテンか...
入力チェックがタコな動的なWebページを生成して表示するサイトに対する攻撃だ。
例えば、ユーザ登録時に住所などチェックが甘そうなところに、
<script>alert('hello')</script>などを入力する。
ユーザ登録結果画面でこのコードをそのまま表示すると、JavaScriptが実行される。
上記の場合は、helloというポップアップが表示される。
ということは、JavaScriptで実行できることならなんでもできるということだ。
入力内容(ユーザ登録ならID・パスワードもあるでしょ)盗むなんてことも簡単。
情報(cookieとか)を盗むだけではなく、他への攻撃の踏み台にされることもある。
ajaxなんて仕込まれた日にはサーバパンクさせるのも簡単。
まずいの。
まずいので、通常は入力されたJavaScriptコードは実行できないようにしてる。
入力できないではなく。(エラーにはしない。)
なので、<>"'&あたりをHTMLエンコードしとく。
この本ではサニタイジングゆうてるけど...なんだろね。聞いたことない。
あと、>→& 書いてあるとこあるけど、これは >→>の間違い。でしょ。
JavaScriptだけでなく、入力したデータを処理する場合きちんとエスケープする必要がある。
例えば、単純に"(ダブルクォーテーション)を文字として受け入れて、
出力結果として、<script>alert(""");</script>(真ん中の"がそれ)
なんてすると、JavaScriptエラーとなる。
SQL文作るところでも同じことが起きる。
ので、都合の悪い文字は片っ端からエスケープ(をつける)しとくのがふつーです。
どんなものが都合が悪いかはシステム(言語)によっても違うので、一概には言えませんが。
ちなみにgooブログはエスケープしてるみたいです。
この間¥(の半角文字)を入れたら消えてました。
単純削除されてます。
JavaScriptは...画面に出てますな。コードが。
しかたないので、エスケープして入力しときます。
この項長いので二回に分けます。
次回はSQLインジェクションとOSコマンドインジェクションです。