ユーザー入力の墨塗り/検証は明確なテーマですが、特定の状況を明確にするために投稿しています。
コードのセクションは
$haystack=$_GET['user'];
$入力は「エコー」または「印刷」のため、または任意のSQLクエリまたは任意のそのようなことに使用されることはありませんが含まれています。ユーザー入力($ haystack)をさらに使用するのは、文字列にあらかじめ定義された$針が含まれているかどうかを確認することだけです。
if (preg_match($needle,$haystack)) {
$result="A";
} else {
$result="B";
}
私の心配は、悪意のあるコードの実行ではなく、ユーザの入力におけるそれの存在です。
上記のように、ユーザの入力が文脈(エコー、プリント、SQLなどでは使用されません)でのみ使用されている場合は、依然としてユーザ入力の悪意のあるコードが実行される可能性があります。
私は、コンテキストに必要なセキュリティ対策を余計に追加したかったのです。
問題はないと思いますが、どの変数が消されているかを忘れた場合の最大の問題は何ですか?またはあなたがそれが消毒されていると思った後に他のプログラマーがいたら。私はそれが良い方法であることを知っています(チェックせずに忘れてしまいますが起こる可能性があります)、より良い機能を作り、どんな入力にも簡単に適用できます。または$ clean_xxx –
のような明確にラベル付けされた変数名にあなたの除外された変数を入れることができます。[PHPでスーパーグローバルを直接使うのは良いですか?](http://stackoverflow.com/questions/3498207/is-using-superglobals-directly -good-or-bad-in-php) – vaxquis