2008年2月 4日

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

田中と申します。

インジェクションの対策の基本的な考え方は、
入力データ値の文字種属性の可能性とエンコード と
出力データの受け入れ可能な文字種属性をその都度チェック・エスケープ
することだと思います。

mysql_real_escape_string を使えばなんでもOKではダメで、

POST入力値をHTMLエンコードした上で、PHPのROW文字種に変換し、受け入れ
可能かチェックをします。
日本語ぽいバイナリだったらチェックしない、これ自体インジェクションに
つながります。
SQLの文字列としてmysql_real_escape_stringを使うという認識が必要でしょう。
ですので、入力値に入るデータの可能性を見極め、チェックし、出力タイプ毎に
エスケープをすることが必要だと思います。

たとえば、LIKE 演算子の左辺値に mysql_real_escape_string を利用したら
どうなるでしょう。それぞれの値の使い方に合わせたエスケープ処理が必ず
必要でしょう。
--
rimk@xxxxx

_______________________________________________
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日 11:04
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/69436
トラックバック
コメント
コメントする




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