-1

私がこれを見つけるすべての場所で、「これまでに(これまでに)外国の入力を信頼することは決してありません」。すべてのユーザー入力を検証するよう求めます。しかし、何を検証すればよいかわかりません。ユーザーが悪意のあるコードを入力した場合にユーザー入力を検証する基準はありますか? 実際、この悪意のあるコードが何であるか、および検証方法を知りたいですか?

FILTER_VALIDATE_EMAIL少し調査した後、パスワード検証、電子メール、およびFILTER_VALIDATE_URLURL 検証用の標準の password.php を見つけました。しかし、名前、テキストエリア、電話番号、ユーザー名などの他の入力フォームについて、検証する標準はありますか?

4

4 に答える 4

3

ビジネス ルールに基づいて入力を検証する必要があります (電子メールの検証がそのようなケースです)。出力メディアに基づいて出力をエスケープする必要があります。データをブラウザーに送信するときは HTML をエスケープし、データベースに送信するときは db 固有の文字をエスケープします。

于 2012-12-25T09:52:39.533 に答える
2

プロジェクトとユースケースのニーズに応じて、すべてを検証する必要があります。
ネイティブ PHP には、標準的な完全な検証ソリューションはありません。
優れたZend バリデータコレクションを使用できます (Zend がなくても) http://framework.zend.com/manual/1.12/en/zend.validate.set.html
非常に強力で、必要なものがすべて含まれているため、これは良い選択です。今、そして将来必要になるものすべて。

于 2012-12-25T09:54:55.157 に答える
1

いいえ。ユーザー入力を検証する基準はありません。

その意味と将来の使用に基づいて、すべての単一の値を個別に検証する必要があります。

于 2012-12-25T09:51:02.560 に答える
0

検証とサニゼーションを混同しないでください。以前の回答はすべて優れていますが、ユーザー入力を特定の形式にする必要がある場合は、検証を行う必要があることを指摘したいと思います。電子メールは電子メールであるため、有効な電子メール アドレスに電子メールを送信できます (ただし、アドレスは必ずしもアクティブなアドレスではありません)。integerまた、数値は数値であるため、入力をデータベースの/float列に問題なく挿入できます。

一部の検証タスクは、データベース/アプリケーション (整数の検証など) を安全に保つのにも役立ちます。しかし、フリーテキスト、電話番号、住所などを検証するにはどうすればよいでしょうか? この種の入力は、ほとんどの場合サニタイズする必要があります。特殊文字をエスケープするか、ユーザーの悪意のあるDELETE *種類の入力が実行されないようにします。

また、電話番号や住所などを検証する (サニタイズしない) のが好きな人を指す言葉でもあります。インターネットはグローバルです (当たり前のことですが...)。国の書式設定規則に従って厳密すぎる検証規則を使用して、ユーザー入力を制限することに熱心になりすぎないでください。ネイティブのフィンランド人として、私は厳密なフォーマット規則が非常に煩わしい場合が多く、正しい情報を提供することが不可能になることもありました。コーダーは自分が非常に巧妙に厳密なフォーマットを定義していると考えているためです。彼の住所の正しい形式です。

于 2012-12-25T11:57:15.867 に答える