[PHP-users 24235] Re: クロスサイトスクリプティングとSQLインジェクションの防止策

YOSHIMURA Keitaro ramsy @ ramix.jp
2005年 1月 27日 (木) 10:58:05 JST


らむじぃです。

> つまりユーザーAが入力した値はユー
> ザーAしか見ないことが保障されているのならば、XSSの問題は存在し
> ないと考えてよろしいのでしょうか。
いいえ。GETメソッド対応であれば巧妙に偽装されたURLを踏まされた際、POSTメ
ソッド専用の場合でも踏み台ページ経由で問題になります。
フィッシングサイトで、本物のサーバのXSSを突いた物があったと思います。

> またユーザーAの入力した値($a)をユーザーBに表示する場合PHPの関数
> htmlspecialcharsを使用して表示すればそれのみでXSSの危険は完全に
> 防止できるのでしょうか。
完全には出来ません。
あくまでhtml中に出力する時にそのままでは問題となる文字を変換して出力する
だけです。XSSの脅威を除去「出来るシチュエーションもある」だけです。
" や ' を処理しない設定もあるわけですし、それだけでもありません。

> PHPの関数を眺めるとaddslashesという関数が見つかりシングルクォー
> テーションをクォートしてくれることが期待できます。$valueを
> $value = addslashes($value)とすれば上記のSQLにおいてはSQLインジェク
> ションを完全に防止することができるのでしょうか。
RDBMSによってはそれで防止できる場合もあるかもしれません。
泥臭い処理を行うのではなく、プレースホルダを使うべきです。
制限事項文字規約が変わった時に、すべて書き換える悪夢を繰り返すべきではあ
りません。

-- 
<|> YOSHIMURA Keitaro/ramsy
<|> ramsy @ ramix.jp
<|> http://ramix.jp/~ramsy/



PHP-users メーリングリストの案内