私は現在、多くのユーザーの入力を必要としないWebサイトを構築しています。私はいつどのような種類の文字が許可され、どの文字が許可されないのかを知っています。たとえば、すべての入力は英数字、電子メール、または。$! & @ ** - +。現時点では(パスワード)filter_input-regexpは "little freedom"の入力には十分ですか?
、私は常に、任意の入力を使用する前にチェックして、私はPHPのfilter_input機能でこれを行う、私は後でのみ使用するようにしたいと思い
filter_var($post['var'], FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH);
filter_input(INPUT_GET, 'id', FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>"/^[a-zA-Z0-9]*$/")
filter_input(INPUT_POST, 'password', FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>"/^[a-zA-Z0-9\.\$\-\_\!\£\@\#\*\:\?\&]+$/"))
のようなフィルタを使用してregexpで検証してください。なぜなら、何を承認するのか、何を拒否するのかを決める上で最良の選択と思われるからです。
私は少し編集的ですから、最初に説明されている使用法について(<([{"'/ /は許されません)単純に検証を使用するのが安全かどうかを知りたいです正規表現による。
実行を想定し
はい実行は実際にはとにかく進むために通常必要な情報として終了します。 MySQLに関しては、十分に簡単な準備文ですか? – Dominus
各パラメータを個別に渡す必要があります。パラメータは入力する必要があります(数値は実際に数値に変換され、文字列はエスケープされます)。これはSQLインジェクション防止の一般的な考え方です。 –