Thanks Driven Life

日々是感謝

merciful-polluter 0.0.5 をリリースしました

概要

magic_quotes_gpc のエミュレートを ON にしている時、$_REQUESTエスケープされていなかった問題が修正されました。

例えば下記のようなサーバーサイドのコードがあるとします。

<?php
$request = new Gongo\MercifulPolluter\Request();
$request->enableMagicQuotesGpc();
$request->pollute();

var_dump($_GET);
var_dump($_POST);
var_dump($_COOKIE);
var_dump($_REQUEST);

次にクライアントとして下記コードを実行してみます。

$ curl 'http://localhost/?hoge=ho"ge' -X POST -d "huga=hu'ga" -b 'piyo=pi\yo'

その結果がこちら!

// $_GET
array(1) {
  ["hoge"]=>
  string(6) "ho\"ge"
}

// $_POST
array(1) {
  ["huga"]=>
  string(6) "hu\'ga"
}

// $_COOKIE
array(1) {
  ["piyo"]=>
  string(6) "pi\\yo"
}

// $_REQUEST
array(3) {
  ["hoge"]=>
  string(6) "ho\"ge" // 修正前は "ho"ge" だった
  ["huga"]=>
  string(6) "hu\'ga" // 修正前は "hu'ga" だった
  ["piyo"]=>
  string(6) "pi\\yo" //  修正前は "pi\yo" だった
}

まとめ

そろそろ enableRegisterGlobals() とか用意してもいいかもしれない( magic_quotes_gpc だけ有効化したい、みたいなケースに対応)