[PHP-users 8353] Re: 簡易クロスサイトスクリプティング対策スクリプト
Yasuo Ohgaki
php-users@php.gr.jp
Mon, 01 Jul 2002 10:50:33 +0900
大垣です。
Masaru Matsunami wrote:
> 松並と申します。
>
> Sat, 29 Jun 2002 14:26:40 +0900 頃に
> Yasuo Ohgaki <yohgaki@ohgaki.net> さん wrote:
>
>
>>最後に、根本的なクロスサイトスクリプティング対策はコード本体の脆弱性
>>を修正する必要があります。このスクリプトを使っているから安全と言う事
>>はありません。残っている危険性はstoryid 33にコメントしますが、コード
>>を読まないとなんとも言えません、、
>>
>>手っ取り早く書いたスクリプトなので抜けがあるかも知れません。ご指摘、
>>よろしくお願いします。
>
>
> 大垣さん作成のスクリプトはPHPへの入力部分に着目して
> 入力値チェックするものですよね。
> 効果は大きいといえますが、もちろん完璧ではありません。
その通りです。脆弱性が発見されすぐに対応できないが、もっとも
危険なアタックにとにかく早く対応したい、と言う場合だけ有効で
す。
その後、*早急にコードを修正*しなければなりません。
>
> 大垣さんも言及されていますが、結局はHTMLページを作り出すPHPコードを
> 修正する必要があります。
>
> 本質的には「HTMLページを生成するプログラム」部分で、
> 外部から与えられる文字列を「そのまま出力」してしまうことが問題です。
>
> よく < や > といった文字を検出したり、エスケープすればオーケーと
> 聞きますが、HTML中の文脈によっては、クロスサイトスクリプティング脆弱性
> につながることがあります。
> わたしがまとめた情報がこちらにあります。
ご指摘の通り、単純に< >を検出/エスケープすればOKと言うもの
ではありません。< >を検出/エスケープすれば大方OKですが、、、
# ご存知の方も多いと思いますが、現在、クロスサイトスクリプ
# ティングを防止するフォームモジュールを作っています。
# このモジュールを使って処理を完結させると安全に処理でき
# るようになります。しかし、PostgreSQL Conference講演
# 中にも触れたように、他のシステムとデータをやりとりする場
# 合は脆弱な部分ができてしまう事があります。
ついでに他の危険性についても少し、言及しておきます。
コードを見て頂くと判ると思いますが、ユーザーが入力した情報を
再度掲載するタイプのWebページがある場合は、クロスサイトスク
リプティング以外にWebブラウザ/アプリケーションのセキュリティー
ホールを利用したアタックの踏台にされないようにしなければな
りません。
公開したスクリプトでは<bgsound>などの危険なタグもチェック
しています。これらの危険なタグを出力してしまうと、ウィルス
を配布する際にWebサイトが利用されてしまう(踏台にされる)
などの危険性があります。
掲示版等を含むWebサイトはクロスサイトスクリプティングはもち
ろんこの危険性について十分注意してコーディングする必要があ
ります。
# このリストを購読されているほとんどの方は既にこの危険性を
# 十分認識されているとは思います。
# Webページのコメントに記載している通り、掲載したスクリ
# プトでは踏台にされる危険性を排除できません。当然ですが、
# クロスサイトスクリプティングアタックをするコードを保存
# する事もできます。念の為。
もし、この危険性を認識されずにプログラムを作成されている
場合、もう一度コードを見直す事を強くお奨めします。
> 「クロスサイトスクリプティング」
> http://www.ipa.go.jp/security/awareness/vendor/programming/a01_02.html
>
参考にさせて頂きます。
>
> ※個人的には機能優先で拡張しすぎたHTML/JavaScriptなどに
> クロスサイトスクリプティング問題の原因があると恨んでます。
クロスサイトスクリプティングは古くて新しい問題ですね。新しい
Webプログラマが生まれるたびに、問題を含むWebサイトができそう
です、、、
# printe(): 危険なタグを削除、またはエスケープして出力する
# 関数。のようなものがあれば便利かも知れませんが、magic_quote
# の様にこれを使えば安全、と勘違いされるのも困りますし、、
# どうでしょうか?
ブラウザ、ヘルパーアプリケーション開発者にはセキュリティーホー
ルを修正するだけでなく、少なくとも悪意のあるコード、ファイル、
データがWebサイトから送られてきた場合、注意/警告するくらいの
事はやって欲しいですね。(私が知らないだけで実は警告する場合が
多い?)
--
Yasuo Ohgaki