ホームページ > バックエンド開発 > PHPチュートリアル > ベストプラクティスシリーズ (4) - PHP セキュリティの 3 つの柱: フィルタリング、検証、エスケープ検証と Laravel の基礎となるフィールド検証の実装

ベストプラクティスシリーズ (4) - PHP セキュリティの 3 つの柱: フィルタリング、検証、エスケープ検証と Laravel の基礎となるフィールド検証の実装

WBOY
リリース: 2016-06-23 13:04:11
オリジナル
861 人が閲覧しました

2. 検証データ

PHP ネイティブ実装

フィルタリングとは異なり、検証は入力データから情報を削除するのではなく、ユーザー入力が期待どおりであるかどうかを確認するだけです。 。電子メール アドレスの場合は、ユーザーが電子メール アドレスを入力していることを確認し、電話番号の場合は、ユーザーが電話番号を入力していることを確認します。

検証とは、特定の形式に準拠した正しいデータがアプリケーションのストレージ層に保存されていることを確認することです。無効なデータが見つかった場合は、データ ストレージ操作を中止し、対応するエラー メッセージを表示してユーザーに注意を促す必要があります。正しいデータを入力します。検証により、データベース内の潜在的なエラーも回避できます。たとえば、MySQL が DATETIME 型の値を予期し、DATE 文字列が指定された場合、MySQL はエラーを報告するか、またはデフォルト値を使用します。無効なデータが破壊されます。

入力データの検証を実装するには、特定の FILTER_VALIDATE_* フラグを filter_var 関数に渡すことができます。PHP は、ブール値、電子メール アドレス、浮動小数点数、整数、IP、正規表現、URL を検証するためのフラグを提供します (詳細については http を参照してください)。 ://php.net/manual/en/filter.filters.validate.php )。次の例は、電子メール アドレスを検証する方法を示しています。

<?php$input = 'yaojinbu@163.com';$isEmail = filter_var($input, FILTER_VALIDATE_EMAIL);if ($isEmail !== FALSE) {    echo 'success';} else {    echo 'failed';}
ログイン後にコピー

検証が成功した場合は、検証対象の値が返され、検証が失敗した場合は false が返されます。

PHP コンポーネントの助けを借りて

filter_var 関数は検証用に多くの識別子を提供しますが、これに頼ってすべてのデータを検証できるわけではありません。 filter_var 関数のほかに、より複雑な検証関数の完成に役立つ次のコンポーネントもあります:

  • aura/filter
  • respect/validation
  • symphony/validator

注: 入力データは検証と検証の両方が必要です。期待を満たし、安全であることを確認するためにフィルタリングされています。

Laraval でのデータ検証の実装

データ検証のほとんどのシナリオはフォーム送信で行われ、ほぼすべてのニーズを満たすことができる、Laravel についてのデータ検証の方法も提供します。公式ドキュメントを参照してください: http://laravelacademy.org/post/3279.html。ここでは、ユーザー登録を例として、検証メソッドが AuthController で定義されているものについて簡単に説明します。たとえば、このルールは、電子メール フィールドが必須であること、電子メール アドレスである必要があること、最大長が 255 であること、および users テーブル内で一意であることを示します。検証プロセス全体の実装を見てみましょう。検証プロセスは RegistersUsers トレイト (IlluminateFoundationAuthRegistersUsers) で呼び出されます。

このメソッドは、最初に AuthController の検証メソッドを呼び出して、検証プロセス (IlluminateValidationValidator) の初期化を完了します。次に、fails メソッドが失敗するかどうかを検証し、fails メソッドが pass メソッドを呼び出します。 pass メソッドは、最終的に各ルール (初期化中に配列に変換される) を走査し、validate メソッドを呼び出します。メソッド:

OK ここでは、各ルールに対応する検証メソッドが最終的に組み立てられ、呼び出されることがわかります。電子メールを例に挙げると、この検証メソッドは Validator で定義されています (実際には、検証メソッドです)。各ルールは、ここで対応する検証メソッドを見つけることができます):

コードを通して、PHP によって提供される filter_var が呼び出され、受信フィールドが有効なメールかどうかを検証するために FILTER_VALIDATE_EMAIL フラグが渡されることがわかります。住所。他の検証ルールの実装については、興味のある学生は Validator クラスを学ぶことができます。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート