CodeIgniter PHPフレームワークには、リクエストごとに自動的に実行される関数があります。この関数は、特にGET / POST / COOKIE配列キーをフィルタリングし、安全でないと見なされる文字に遭遇した場合にアプリケーションを強制終了します。
悪意のあるユーザーがキーを悪用しようとするのを防ぐために、キーには英数字のテキストとその他のいくつかの項目のみが付けられていることを確認します。
何かのようなもの:
// foreach GET/POST/COOKIE keys as $str...
if ( ! preg_match("/^[a-z0-9:_\/-]+$/i", $str))
{
exit('Disallowed Key Characters.');
}
たとえば、これは、のようなものを誤って投稿し<input name="TE$T">
たり、のようなクエリ文字列を持っている場合にトリガーされます?name|first=1
。
これは常識的なキー名を適用したり、アプリケーションの開発中に間違いを見つけたりするための良い方法であることがわかりますが、理解できません$_POST
。たとえば、悪意のあるユーザーがデータ内のキーを「悪用」する可能性があるのはなぜですか。特に(私が推測する)入力値は同じように悪用可能であるため、これは実際に何を防いでいますか?