単純なテキストフィールドから無効な$ _POSTデータを拒否するネイティブPHP関数はありますか?PHPネイティブ関数で共通テキストフィールドをフィルタリングする
現在、私は正規表現でカスタムフィルタ関数を使用しています。可能であれば、コードを単純化したいと考えています。
たとえば、姓を入力するためのフォームフィールドがあるとします。私は提出された値をチェックし、無効な文字が含まれている場合はすぐに入力を拒否したい。ここで
は、PHPの関数を考えるための私の基準である:
人の姓は「スミス・ジョンソン」であるかもしれない、「ヴァン・ビューレン」、「オマリー」など、その機能のニーズ空白、ハイフン、アポストロフィなどを許容すること。
私の目標は、入力をテストしてすぐに拒否することです。それを浄化し、追加のフィルタと処理ステップで実行することです。私がキャッチしたい入力の
2つの例は、ここに
username' -- username; DELETE FROM users;
は、私の知ると、なぜ私はそれらを使用して疑問を持っているオプションです...
IS_STRING():この関数は
上記の2つの例のいずれかをキャッチしていないようです
にaddslashes():この関数は、第二の基準
にhtmlentitiesを(失敗)はhtmlspecialchars()にaddslashes同じ()。それはそれらを消毒するのではなく、不要な文字がなくなるためは第二の基準を失敗しますが、#3好ま:入力が無効な場合、私は)(
strip_tagsを消毒いたとしても、それを扱う維持する必要はありません
filter_input(... FILTER_SANITIZE_STRING):私が知る限り、これはstrip_tags()と同じです。 **
ctype_alpha()、ctype_alnum():空白やその他の文字を許可しないため、最初の条件に失敗します。
正規表現/カスタム関数:これは私が使用しているものです。私は本当に私のコードを簡素化し、(最小限だが)正規表現のオーバーヘッドを排除することを好むだろう。
-
**興味があるだけ:PECLはfilter_input)(strip_tags()より速く作るのですか?
SQLインジェクションを適切に防止するために、プレースホルダと共にPDOを使用してください。私はいくつかのHTMLタグをサポートしない限り、XSS注入のために私はhtmlentitiesを使う傾向があります。その場合、HTMLパーサを使用して許可されたタグのフィルタを作成します。 – Cfreak
適切なエンコーディングを使用しても問題ありません。 – Gumbo
ありがとうございます - これらのベストプラクティスの両方に同意し、両方のコードに適用します。私は質問や出力を準備する時点までに入力を拒否することに興味があります。 – cantera