« 初ブログ! | トップページ | XAMPPのエラー『エラー:MYSQLの起動中にエラーが発生しました。[-1]』 »

クロスサイトスクリプティング

先日、クロスサイトスクリプティングとい言葉を初めて知ったので、以下にメモ代わりに調べた結果を残しておきます。

--------------------------------

クロスサイトスクリプティング (Cross Site Scripting) とは、動的にWebページを生成するアプリケーションのセキュリティ上の不備を意図的に利用し、狭義にはサイト間を横断して悪意のあるスクリプトを混入させること。また、それを許す脆弱性のこと。広義にはスクリプトを混入させずとも、任意の要素を混入させられうる脆弱性を含む。略記としてCSS、XSSがある。CSSは同分野でよく使用されるCascading Style Sheetsの略でもあるので、混乱を避けるためにXSSと表記されることが多い。

攻撃者が対象となるサイトとは異なるサイトからスクリプトを送り込み、訪問者に実行せしめることから、クロスサイト(サイトを横断した)スクリプティング(スクリプト処理)と呼ばれる。

ウェブアプリケーションが入力したデータ(フォーム入力など)を適切にエスケープしないままHTML中に出力することにより、入力中に存在するタグ等文字がそのままHTMLとして解釈される。ここでスクリプトを起動させることにより、以下に挙げるような攻撃が成立する。

    ・クッキーの値を取得あるいは設定することにより、セッションハイジャックする
    ・強制的なページ遷移を起こさせ、クロスサイトリクエストフォージェリの踏み台とする
    ・ページ全体を置き換えることにより、偽のページを作り出す(典型的にはフィッシングに用いられる)
    ・フォームの送信先を置換することにより、入力を第三者サイトに送信するよう仕向ける

これらの攻撃が成立することにより、秘密情報の窃取や、回復不可能な権利侵害につながるおそれがある。

--------------------------------

とのことです。

ちなみに、自分がPHPを勉強し始めて最初に以下のようなスクリプトを書きました。

<input type="hidden" name="name"value="<?php print $_POST[name]; ?>">

これでは、XSS脆弱性があるようですね。そのため以下のように修正しました。

<input type="hidden" name="name" value="<?php print htmlspecialchars($_POST[name]); ?>">

htmlspecialcharsを使うことで、HTMLの特殊文字を実態参照に変換してくれます。
XSSを防ぐためにはhtmlspecialcharsを使う!勉強になりました。

|

« 初ブログ! | トップページ | XAMPPのエラー『エラー:MYSQLの起動中にエラーが発生しました。[-1]』 »

プログラム」カテゴリの記事

コメント

祝ブログ。更新楽しみにしてます。

htmlspecialchars($_POST[name]);
は漏れなく適用できるようにnameの部分を引数にした関数とかにしとくと良いよ。

$_POSTをあっちこっちに書くのは良くないのです。


投稿: pools | 2009年2月 8日 (日) 21時45分

poolsさん、早速ブログを見てもらってありがとうございます!

それから、アドバイスありがとうございます。

まだまだ、サンプルコードを探してきて、編集しているレベルなので、いっぱいソースを書いて、勉強していきたいと思います。

投稿: pierrot | 2009年2月11日 (水) 19時04分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1165602/27891871

この記事へのトラックバック一覧です: クロスサイトスクリプティング:

« 初ブログ! | トップページ | XAMPPのエラー『エラー:MYSQLの起動中にエラーが発生しました。[-1]』 »