[Maple-user: 260] Re: magic_quotesの扱いについて

Back to archive index

TAKAHASHI Kunihiko takah****@knosp*****
2006年 4月 10日 (月) 23:23:56 JST


高橋(kunit)です。

On Mon, 10 Apr 2006 11:16:32 +0900
"佐々木栄勝" <naruc****@gmail*****> wrote:

> はじめまして、佐々木栄勝と申します。
> いつも拝見させていただいています。
>
はじめまして。
これからもよろしくお願いします。

> 現在プロジェクトでMaple 3.1.0を使用しているのですが、
> フィールドにシングルクォートを入力したところSQLエラーが発生してしまいました。
> .htaccessでmagic_quotes_gpcを設定してあるので、Mapleのほうで
> $_POSTの値になにか処理をしているのだろうと踏んだところ
> Requestクラスでstripslashesしている部分を見つけました。
> 検索して見た限りではaddslashesをしている箇所はないようです。
> 
> すべてのソースを読んだわけではないのでまだまだ勉強不足なのですが
> このstripslashesが意図しているものがよく理解できません。
> 必須の処理だと思うので、Requestクラスのstripslashesを消してしまうのは
> まずいと予想していますが、ということはSQLを作成するときには
> 必ずaddslashesして値を埋め込む必要があるということでしょうか?
>
現状、Mapleでは magic_quote_gpc = On の場合に、積極的にstripslashesを
かけています。これは以下の考えに基づいています。

  ・リクエストパラメータは入り口で加工するのではなく、使用する直前に
    用途に応じて適切にエスケープすべきである。(値が不適切な場合には、
    エラーにして処理を中断すべきである)

magic_quote_gpcをつかった自動処理は百害あって一利なしだと考えています。
(今ではregister_globals=Onレベルのまずさかなと)

実際、addslashesが自動的にかかってシングルクオートがエスケープされても
それは表示の際には邪魔になる(おまけにSJISだと余計な\がつく)し、
addslashesがかかっているからSQLインジェクション対策になるというのは
間違いだと思います。このあたり、大垣さんのブログや書籍に詳しく説明が
のっています。

以下のものを見る限り、大垣さんは2002年には既にmagic_quote_gpcの問題を
指摘されてますね。

http://ns1.php.gr.jp/pipermail/php-users/2002-November/011850.html

セキュリティーレベルを上げるためには、DB向けにはmysql_escape_string等の
処理を個別に行い、表示向けにはhtmlspecialcharsを個別にかけるというのが
望ましいと考えます。

・・・という理由でかけております。ご理解いただけますでしょうか?
---
TAKAHASHI Kunihiko
KNOSPEAR Inc.




Maple-user メーリングリストの案内
Back to archive index