PHPフィルター

PHPz
PHPzオリジナル
2024-08-29 13:03:46702ブラウズ

フィルター機能を備えた言語はほとんどありません。フィルターは、プログラミング言語の付加価値機能の 1 つです。これは、処理前にデータまたは文字列をフィルタリングするのに役立ちます。これは、システムの脆弱性の問題を防ぐためにこれを使用するときの要請です。 PHP フィルターを使用して、外部入力を検証またはサニタイズできます。 PHP フィルターは、コーディング中に使用できるさまざまな機能を備えた拡張機能です。たとえば、フォームからのクライアント入力を電子メール ID として取得する場合、データベース関連の操作の前にそれを検証またはサニタイズする必要があります。プログラマーまたは開発者は、ビジネス ニーズや要件に応じて PHP でこれらのフィルターを使用する必要があります。

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

構文

サニタイズとフィルターは、Web アプリケーション環境で最も一般的な操作です。基本的な構文は次のとおりです:

filter_var(variable, filter, options)

この関数 filter_var は 3 つのパラメータを取ります。最後の 2 つのパラメーター、フィルター、およびオプションはオプションです。最初のものは変数または識別子そのものです。これはフィルター処理するもの、2 番目は実行したいもの (ここでは、PHP で使用可能なオプションの ID を渡します)、最後はフィルター関連のオプションです。クイズの例で同じことを理解しましょう:

コード:

<?php
$int_val = 200;
if(filter_var($int_val, FILTER_VALIDATE_INT)){
echo "The <b>$int_val</b> is a valid one."; // valid
} else{
echo "The <b>$int_val</b> not a valid input as an integer"; // invalid
}
?>

上記の例では、フィルターを使用し、変数 $int_val に整数値があるかどうかをチェックしています。したがって、これは同じ出力です。

出力:

PHPフィルター

PHP でフィルターを使用するのはなぜですか?

多くの PHP Web アプリケーションは、クライアント側から外部入力を受け取ります。ユーザーがすべてのデータを正しく入力することは期待できないため、処理前にユーザー入力をクリーンアップするという考えです。外部ユーザーまたはシステムの入力またはデータは、重大なセキュリティ問題を引き起こす可能性があります。

ここでフィルタリングして、次のようなさまざまな外部ソースから入力されたデータをサニタイズできます。

  • クライアント ユーザーがフォームから直接入力する
  • Cookieのデータ
  • Web サービスからのデータ
  • サーバー変数のデータ
  • データベースクエリ結果

PHP フィルターとサニタイザーを併用すると、入力が有効かどうかを取得できます。この場合、有効な入力でない場合は、それをサニタイズして有効な入力にすることができます。次の例のセクションでは、これに関連するさまざまな例について説明します。

PHP のフィルターの例

PHP ではさまざまな種類のフィルターを使用できます。 filter_list() 関数を使用してそのリストを確認できます。これらの関数は、URL、文字列、数値、IP アドレスなどをフィルタリングします。

例 #1

このセクションでは、さまざまなフィルターのサンプル プログラムを個別に見ていきます。

文字列をサニタイズする

文字列が有効かどうかを確認するには

コード:

<?php
$comment = "Hello word";
if(filter_var($comment, FILTER_SANITIZE_STRING)){
echo "The <b>$comment</b> is a valid one."; // valid
} else{
echo "The <b>$comment</b> not a valid input"; // invalid
}
?>

上記の例では、有効な文字列が確認できます。そのため、有効な値が得られます。

出力:

PHPフィルター

サニタイズされた文字列を出力として取得します

<?php
$comment = "<i>Hello word</i>";
echo "Before sanitizing: ". $comment;
$comment = filter_var($comment, FILTER_SANITIZE_STRING);
echo "<br>"; // for new line
echo "After sanitizing: ". $comment;
?>

2 つの異なる出力があることがわかります。サニタイズ前とサニタイズ後の出力が異なることがわかります。サニタイズ後、PHPのフィルター機能によりHTMLタグが削除されています。

出力:

PHPフィルター

例 #2

IP アドレスを検証する

PHP フィルター関数がこの仕事を行ってくれます。例を見てみましょう。

コード:

<?php
$ip_address = "172.16.254.1:40";
if(filter_var($ip_address, FILTER_VALIDATE_IP)){
echo "The <b>$ip_address</b> is a valid one."; // valid
} else{
echo "The <b>$ip_address</b> is not a valid input"; // invalid
}
?>

出力:

PHPフィルター

例 #3

メールアドレスのサニタイズと検証

コード:

<?php
$email_address = "someone@@testmail.com";
code>
echo "Before Sanitizing: " . $email_address ."<br>";
if(filter_var($email_address, FILTER_VALIDATE_EMAIL)){
echo "The <b>$email_address</b> is a valid one."; // valid
} else{
echo "The <b>$email_address</b> not a valid input"; // invalid
}
echo "<br>";
echo "After Sanitizing: " .  filter_var($email_address, FILTER_SANITIZE_EMAIL);
?>

上記の例では、フィルター関数を使用してこの出力を取得しているため、無効な電子メール ID 値が含まれています。しかし、サニタイズした瞬間に、正しいメールが送信されます。

出力:

PHPフィルター

コード:

<?php
$email_address = "[email protected]";
if(filter_var($email_address, FILTER_VALIDATE_EMAIL)){
echo "The <b>$email_address</b> is a valid one."; // valid
} else{
echo "The <b>$email_address</b> not a valid input"; // invalid
}
?>

上記の PHP コードの例では、電子メールが有効かどうかを確認します。

出力:

PHPフィルター

例 #4

URL をサニタイズして検証します

この例では、入力 URL が有効かどうかを確認します。有効な URL でない場合は、それをサニタイズして修正します。

コード:

<?php
$URL = "https://www.educba.com/��courses�";
echo "Before Sanitizing: " . $URL ."<br>";
if(filter_var($URL, FILTER_VALIDATE_URL)){
echo "The <b>$URL</b> is a valid one."; // valid
} else{
echo "The <b>$URL</b> is not a valid input"; // invalid
}
echo "<br>";
echo "After Sanitizing: " . filter_var($URL, FILTER_SANITIZE_URL);
?>

出力:

PHPフィルター

結論

ユーザー入力を検証またはサニタイズするには、PHP フィルターを使用する必要があります。このようにして、脆弱なユーザー入力を制限できます。ユーザー入力と値を検証するために、さまざまな PHP フィルター関数を使用できます。サニタイズを使用して値 (ユーザー入力または直接割り当てられた値) をクリーンアップすることもできます。データ処理に Cookie データを使用する前に、必ず PHP サニタイザーを使用する必要があります。

以上がPHPフィルターの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。