がるの健忘録

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

お便利簡単magic_quotes

んと…なんていいますか…「いいから余計なことするな」って感じでしょうかハイ。


magic_quoteってのがあるのです。

GPC(Get/Post/Cookie) 処理に関する magic_quotes の設定を行います。 magic_quotes が on の場合、'(シングルクオート)、" (ダブルクオート)、\(バックスラッシュ) 、NULL には全て自動的に バックスラッシュでエスケープ処理が行われます。magic_quotes_sybase も on の場合、シングルクオートは、バックスラッシュではなく シングルクオートでエスケープされます。

………なんでこーゆー邪魔臭い処理するかな*1


えと…そうだなぁ「Shift-jis関連」がすこぉし頭にあれば、特に日本語環境で「どれだけ面倒起こすか」自明の理。


さてはて。
某所に

function readPost($key) {
    return get_magic_quotes_gpc() ?
        stripslashes($_POST[$key]) :
        $_POST[$key];
}

ってのがあったのですが…惜しむらくは

  • $_POST[$key] が配列のときを考慮していない

ってのが難点。
さて…どうしたものやら。
MagicWeaponだと、cgi_requestクラスでぎり吸収可能ではあるのですが。
…とはいえ

magic_quotes_sybase も on の場合、シングルクオートは、バックスラッシュではなく シングルクオートでエスケープされます

の部分を真摯に考えると…結構処理が面倒である。いやまぁstripslashes関数が一応考慮はしてくれるっぽいのだが。


とりあえず。あちこちサイト見て回りましたが、magic_quotes関連をOnにする理由は「ビタ一欠けら」ほども見当たりませぬ。
時々「これをOffにしたときはセキュリティ的に注意」とか書いてあるサイトがありますが。「Onにしてたってなんぼでもセキュリティ的には危険」なので。むしろ「セキュリティ的に盲目になる」分だけ、Onのほうが厄介だと思います(それ以外でも十二分に厄介ですが)。
っつか。やっぱり「iniファイルで挙動が変わる言語」ってなんかおかしいよ………

*1:セキュリティ上の理由とか思った諸氏は深く反省されることをお勧めしたい。