2008年2月 4日

[PHP-users 33236] Re:SQLインジェクションの可能性

うえだです。

SQLインジェクションからは外れてしまいますが。

>POST入力値をHTMLエンコードした上で、
DBなどに保存するデータの場合、格納前にエンコード(エスケープ)してから格
納しよう、という主張を時々見かけますが、私は違和感を感じます。

理由として、他のレスにもあるように、エンコードすると文字列長が変化してし
まうため、予定していた長さと異なる可能性があるということと、出力する際に
「すでにエンコードされている」という前提でそのまま表示してしまうと、何ら
かの事情でエンコードされていないデータがDBなどに格納されていた場合、その
ままエンコードされずに表示されてしまう危険性があります。

そのため、私はDBなどには生データを保存し、出力時に必要に応じてエンコード
(エスケープ)するという手段をとっています。
DBなどには生データを保存する手段のほうが、将来的なアプリケーション側の変
更などに対応しやすいと思うのですが、問題があるのでしょうか。

> 田中と申します。
>
> インジェクションの対策の基本的な考え方は、
> 入力データ値の文字種属性の可能性とエンコード と
> 出力データの受け入れ可能な文字種属性をその都度チェック・エスケープ
> することだと思います。
>
> mysql_real_escape_string を使えばなんでもOKではダメで、
> POST入力値をHTMLエンコードした上で、PHPのROW文字種に変換し、受け入れ
> 可能かチェックをします。

_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3

投稿者 xml-rpc : 2008年2月 4日 14:56
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/69438
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。