1.php フィルター
PHP フィルターは、ユーザー入力などの安全でないソースからのデータを検証し、フィルターするために使用されます。
2. PHP フィルターとは
PHP フィルターは、安全でないソースからのデータを検証し、フィルターするために使用されます。
ユーザー入力またはカスタム データのテスト、検証、フィルタリングは、Web アプリケーションの重要な部分です。 PHP のフィルター拡張機能は、データのフィルター処理を簡単かつ高速にするように設計されています
3. フィルターを使用する理由
ほぼすべての Web アプリケーションは外部入力に依存しています。通常、このデータはユーザーまたは他のアプリケーション (Web サービスなど) から取得されます。フィルターを使用すると、アプリケーションが正しい入力タイプを確実に取得できるようになります
外部データをフィルターするとセキュリティが向上します。それでは、どのような外部データがあるでしょうか?
(1).フォームからの入力データ
(2).Cookie
(3).Webサービスデータ
(4).サーバー変数
(5).データベースクエリ結果
関数とフィルター
変数をフィルターするには、次のフィルター関数のいずれかを使用します:
filter_var() - 指定したフィルターで単一の変数をフィルターします
filter_var_array() - 同じまたは異なるフィルターでフィルターします 複数の変数をフィルターするフィルター
filter_input - 入力変数を取得し、それをフィルターします
filter_input_array - 複数の入力変数を取得し、同じまたは異なるフィルターを通してそれらをフィルターします
<?php header("Content-type: text/html; charset=utf-8");//设置编码 $int = 123; if(!filter_var($int, FILTER_VALIDATE_INT)){ echo("不是一个合法的整数"); }else{ echo("是个合法的整数"); } ?>
注: 有効な整数を記述すると、出力は有効な整数になります。そうでない場合、出力は有効な整数ではありません。
検証とサニタイズ これらは 2 種類のフィルタです
検証フィルタ:
ユーザー入力を検証するために使用されます
厳密な書式設定ルール (URL や電子メールの検証など)
成功した場合は予期された型を返し、失敗した場合は FALSE を返します
サニタイズフィルター:
文字列内の指定された文字を許可または禁止するために使用します
データ形式規則はありません
常に文字列を返します
オプションとフラグ
オプションとフラグは、指定されたフィルターに追加のフィルター オプションを追加するために使用されます。
異なるフィルターには異なるオプションとフラグがあります
<?php header("Content-type: text/html; charset=utf-8");//设置编码 $var=300; $int_options = array( "options"=>array( "min_range"=>0, "max_range"=>256 ) ); if(!filter_var($var, FILTER_VALIDATE_INT, $int_options)){ echo("不是一个合法的整数"); }else{ echo("是个合法的整数"); } ?>
注: 上記のコードと同様に、オプションは「options」と呼ばれる関連する配列に入れる必要があります。フラグを使用する場合、フラグを配列にする必要はありません。整数が「300」なので指定範囲外です
入力の検証
フォームからの入力を検証してみましょう。
最初に行う必要があるのは、探している入力データが存在することを確認することです。
次に、filter_input() 関数を使用して入力データをフィルターします。
以下の例では、入力変数「email」がPHPページに渡されます
<?php header("Content-type: text/html; charset=utf-8");//设置编码 if(!filter_has_var(INPUT_GET, "email")){ echo("没有 email 参数"); }else{ if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL)){ echo "不是一个合法的 E-Mail"; }else{ echo "是一个合法的 E-Mail"; } } ?>
注: フォームがデータを送信する際には、まずgetでデータが送信されているかどうかを確認します
その後、データが送信されているかどうかを判断します
🎜正規のメールです 🎜入力のサニタイズ
フォームから渡されたURLをサニタイズしてみましょう。
まず、探している入力データが存在することを確認します。
次に、filter_input() 関数を使用して入力データを精製します。
次の例では、入力変数「url」が PHP ページに渡されます:
<?php header("Content-type: text/html; charset=utf-8");//设置编码 if(!filter_has_var(INPUT_GET, "url")){ echo("没有 url 参数"); }else{ $url = filter_input(INPUT_GET, "url", FILTER_SANITIZE_URL); echo $url; } ?>
注: 「GET」タイプの「url」入力変数があるかどうかを確認してください。
この入力変数が存在する場合は、それをサニタイズ(不正な文字を削除)し、$url変数に保存します