佐々木栄勝
naruc****@gmail*****
2006年 4月 11日 (火) 10:49:59 JST
佐々木(narucissus)です。 お返事ありがとうございます。 本文中に返答させていただきます。 > 現状、Mapleでは magic_quote_gpc = On の場合に、積極的にstripslashesを > かけています。これは以下の考えに基づいています。 > > ・リクエストパラメータは入り口で加工するのではなく、使用する直前に > 用途に応じて適切にエスケープすべきである。(値が不適切な場合には、 > エラーにして処理を中断すべきである) > > magic_quote_gpcをつかった自動処理は百害あって一利なしだと考えています。 > (今ではregister_globals=Onレベルのまずさかなと) > > 実際、addslashesが自動的にかかってシングルクオートがエスケープされても > それは表示の際には邪魔になる(おまけにSJISだと余計な\がつく)し、 > addslashesがかかっているからSQLインジェクション対策になるというのは > 間違いだと思います。このあたり、大垣さんのブログや書籍に詳しく説明が > のっています。 大垣さんの著書ではありませんが、別の書籍でセキュリティについては ある程度勉強をしたと思っていました。addslashesではSQLインジェクションの 対策にはならないということを指摘されて少々驚いています。 これまでmagic_quote_gpcをonにしていた場合(というかほとんどそうしていたんですが...) 表示の前に$_POSTを走査してstripslashesをする処理を必ず入れていましたが、 特に面倒とも思わなかったですし文字コードもeuc-jpで統一していたため 余計な\がつくということもなく、疑問にも思いませんでした。 この点は大垣さんの著書を読んでもっと理解を深めたいと思います。 とりあえず今回はmagic_quote_gpcを使用しないように、クエリの作成時に エスケープを行う処理を追加しようと思います。 > 以下のものを見る限り、大垣さんは2002年には既にmagic_quote_gpcの問題を > 指摘されてますね。 > > http://ns1.php.gr.jp/pipermail/php-users/2002-November/011850.html 大垣さんのブログや書籍を特にチェックしようと思いました。 非常に参考になります。 この他にも、Mapleを使用する上でこの本は必ず読んでおくべき、とか 下地になっている本(またはページ)などありましたらぜひお教えください! (Mojaviなどのフレームワークも該当するのでしょうか...) > セキュリティーレベルを上げるためには、DB向けにはmysql_escape_string等の > 処理を個別に行い、表示向けにはhtmlspecialcharsを個別にかけるというのが > 望ましいと考えます。 DB向けにはaddslashesでよいと思っていましたが、mysql_escape_stringのほうを 使う理由がよくわからなかったので探してみました。 (mysql_escape_stringはマニュアルで確認したところ非推奨ということで mysql_real_escape_stringを使ったほうがよいとのこと。) 以下のページによると、S-JISを使っている場合に問題がありそうですね。 hoshikuzu | star_dust の書斎 http://d.hatena.ne.jp/hoshikuzu/20060211 > ・・・という理由でかけております。ご理解いただけますでしょうか? 大変勉強になりました。ありがとうございます。 -------- naruc****@gmail*****