ホームページ > バックエンド開発 > PHPチュートリアル > クイックヒント:PHPでデータをフィルタリングする方法

クイックヒント:PHPでデータをフィルタリングする方法

Jennifer Aniston
リリース: 2025-02-08 09:14:16
オリジナル
710 人が閲覧しました

Quick Tip: How to Filter Data with PHP

キーポイント

  • アプリケーションでの外部入力を信頼しないでください。攻撃者がコードを注入するのを防ぐために、アプリケーションに含まれるデータをフィルタリングすることが重要です。
  • PHPのデータフィルタリングの2つの主なタイプは、検証とクリーニングです。検証により、外部入力が期待を満たすことが保証されますが、クリーニングは外部入力から違法または安全でない文字を除去します。
  • PHPは、検証とクリーニングのためのさまざまなフィルターを提供します。これらのフィルターは、PHPアプリケーションをより安全で信頼性の高いものにするために、filter_var()およびfilter_input()関数を使用して適用できます。

この記事では、フィルターアプリケーションに含まれるものが非常に重要な理由を検討します。特に、PHPで外部データを検証およびクリーニングする方法について説明します。

アプリの外部入力を絶対に信用しないでください。これは、Webアプリケーションを開発する人なら誰でも学習しなければならない最も重要な教訓の1つです。

外部入力は何でもかまいません - $_GETおよび$_POSTフォームからの入力データ、http要求本体の特定の要素、さらには$_SERVERHyperglobal変数の特定の値です。 Cookie、セッション値、アップロードおよびダウンロードされたドキュメントファイルも外部入力と見なされます。

外部データをコードに処理、出力、含める、または接続するたびに、攻撃者がアプリケーションにコードを注入することができます(いわゆるインジェクション攻撃)。したがって、外部データの各部分が適切にフィルタリングされ、アプリケーションに安全に統合できるようにする必要があります。

フィルタリングの観点から、主に2つのタイプがあります。検証とクリーニングです。

検証

外部入力が私たちの期待を満たしていることを確認します。たとえば、電子メールアドレスが期待される場合があるため、name@domain.comに似た形式が期待されます。これを行うには、FILTER_VALIDATE_EMAILフィルターを使用できます。または、ブール値が期待される場合は、PHPのFILTER_VALIDATE_BOOLフィルターを使用できます。

最も便利なフィルターには、基本的なタイプをフィルタリングするための

FILTER_VALIDATE_BOOLFILTER_VALIDATE_INT、および電子メールとドメイン名をそれぞれフィルタリングする場合、FILTER_VALIDATE_FLOATおよびFILTER_VALIDATE_EMAILが含まれます。 FILTER_VALIDATE_DOMAIN

もう1つの非常に重要なフィルターは

です。これにより、正規表現に応じてフィルタリングできます。このフィルターを使用すると、フィルタリングする正規表現を変更することにより、カスタムフィルターを作成できます。 FILTER_VALIDATE_REGEXP

PHPで検証できるすべてのフィルターは、ここにあります。

クリーニング

クリーニングとは、外部入力から違法または危険な文字を削除するプロセスです。

最良の例は、元のSQLクエリに挿入する前にデータベース入力をクリーンアップすることです。

同様に、最も便利なクリーニングフィルターの一部には、

FILTER_SANITIZE_STRINGFILTER_SANITIZE_CHARSなどの基本的なタイプのクリーニング用のフィルター、およびURLや電子メールのクリーニング用のFILTER_SANITIZE_INTおよびFILTER_SANITIZE_URLが含まれます。 FILTER_SANITIZE_EMAIL

すべてのPHPクリーンアップフィルターはここにあります。

およびfilter_var()filter_input()

PHPがさまざまなフィルターを提供していることがわかったので、それらの使用方法を知る必要があります。

フィルターアプリケーションは、

およびfilter_var()関数を介して行われます。 filter_input()

関数は、指定されたフィルターを変数に適用します。フィルタリングする値、適用するフィルター、およびオプションのオプションの配列が得られます。たとえば、メールアドレスを確認しようとすると、次のコードを使用できます。 filter_var()

目標が文字列をきれいにすることである場合、次のコードを使用できます。
<?php
$email = 'your.email@sitepoint.com';

if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo("This email is valid");
}
ログイン後にコピー
ログイン後にコピー

関数は、フォーム入力から外部入力を取り、それをフィルターします。
<?php
$string = "<h1>Hello World</h1>";

$sanitized_string = filter_var($string, FILTER_SANITIZE_STRING);
echo $sanitized_string;
ログイン後にコピー
ログイン後にコピー

filter_input()関数と同様に機能しますが、入力タイプ(get、post、cookie、server、またはenvから選択できます)、フィルタリングする変数、フィルターが必要です。また、選択的に一連のオプションを取得します。

同様に、外部入力変数「電子メール」がGETを介してアプリケーションに送信されているかどうかを確認する場合は、次のコードを使用できます。 filter_var()

結論

<?php
if (filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL)) {
    echo "The email is being sent and is valid.";
}
ログイン後にコピー
ログイン後にコピー

これらは、PHPでのデータフィルタリングの基本です。他の手法を使用して、正規表現の適用などの外部データをフィルタリングできますが、この記事に表示される手法では、ほとんどのユースケースで十分です。 検証とクリーニングの違い、およびフィルター機能の使用方法を理解していることを確認してください。この知識により、PHPアプリケーションはより信頼性が高く安全になります!

PHPデータフィルタリング(FAQ)

に関するFAQ

PHPデータフィルタリングの重要性は何ですか?

PHPデータフィルタリングは、Webアプリケーションのセキュリティと整合性を確保するために重要です。これは、SQLインジェクションやクロスサイトスクリプティング(XSS)などのセキュリティの脆弱性の一般的なソースであるユーザー入力を検証およびクリーニングするのに役立ちます。データをフィルタリングすることにより、悪意のあるデータまたは誤ったデータがアプリケーションまたはデータベースに損傷を与えることを防ぐことができます。また、データの一貫性と信頼性を維持するのにも役立ちます。これは、アプリケーションのスムーズな動作にとって重要です。

PHPデータフィルタリングはどのように機能しますか?

PHPデータフィルタリングは、特定のフィルター関数をデータに適用することにより機能します。これらの関数は、データを検証し(データが特定の条件を満たしているかどうかを確認)、データをクリーンアップします(データから違法または安全でない文字を削除します)。 PHPは、

など、使用できるさまざまな内蔵フィルター機能を提供します。

一般的なPHPフィルター関数とそれらの使用方法は何ですか?

いくつかの一般的なPHPフィルター関数には、filter_var()filter_input()filter_has_var()、およびfilter_id()が含まれます。 filter_var()関数は、指定されたフィルターを使用して変数をフィルタリングします。 filter_input()関数名前で特定の外部変数を使用し、オプションでフィルタリングします。 filter_has_var()関数は、指定された入力型の変数が存在するかどうかをチェックし、filter_id()関数は名前付きフィルターに属するフィルターIDを返します。

PHPでfilter_var()関数を使用する方法は?

PHPのfilter_var()関数は、指定されたフィルターを使用して変数をフィルタリングするために使用されます。フィルタリングする変数と適用されるフィルターのタイプの2つのパラメーターを受け入れます。たとえば、変数が電子メールであることを確認するには、次のようにFILTER_VALIDATE_EMAIL関数を備えたfilter_var()フィルターを使用できます。

<?php
$email = 'your.email@sitepoint.com';

if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo("This email is valid");
}
ログイン後にコピー
ログイン後にコピー
PHPのデータの検証とクリーニングの違いは何ですか?

PHPでデータの検証には、データが特定の条件を満たしているかどうかを確認することが含まれます。たとえば、メールアドレスを確認して、正しくフォーマットされていることを確認できます。一方、データのクリーンアップでは、データから違法または安全でない文字を削除または交換することが含まれます。これは、多くの場合、SQLインジェクションやクロスサイトスクリプト(XSS)などのセキュリティの脆弱性を防ぐことを目的としています。

PHPでユーザー入力をクリーンアップする方法は?

関数とクリーニングフィルターを使用して、PHPでユーザー入力をクリーニングできます。たとえば、ユーザー名を取得するユーザー名をクリーニングするには、次のようにfilter_input()フィルターを使用できます。 FILTER_SANITIZE_STRING

一般的なPHPフィルターフラグとそれらの使用方法は何ですか?
<?php
$string = "<h1>Hello World</h1>";

$sanitized_string = filter_var($string, FILTER_SANITIZE_STRING);
echo $sanitized_string;
ログイン後にコピー
ログイン後にコピー

PHPフィルターフラグは、フィルタリングプロセスに追加の制約または修飾子を追加するために使用されます。いくつかの一般的な兆候には、

FILTER_FLAG_STRIP_LOWFILTER_FLAG_STRIP_HIGHが含まれます。たとえば、FILTER_FLAG_ENCODE_LOWフラグは、入力から32未満のASCII値の文字を削除します。 FILTER_FLAG_ENCODE_HIGH FILTER_FLAG_STRIP_LOW PHPでフィルターフラグを使用する方法は?

または

関数に対する3番目の引数としてそれらを渡すことにより、PHPのフィルターフラグを使用できます。たとえば、IPアドレスをフィルタリングしてIPv4アドレスのみを許可するには、次のようにfilter_var()フラグを使用できます。 filter_input() FILTER_FLAG_IPV4 PHPの

関数は何ですか?
<?php
if (filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL)) {
    echo "The email is being sent and is valid.";
}
ログイン後にコピー
ログイン後にコピー

PHPのfilter_has_var()関数は、指定された入力型の変数が存在するかどうかを確認するために使用されます。入力タイプと変数名の2つのパラメーターを受け入れます。変数が存在する場合、trueを返します。

PHPでfilter_has_var()関数を使用する方法は?

PHPのfilter_has_var()関数を使用して、特定の入力変数が存在するかどうかを確認できます。たとえば、「username」という名前の投稿変数が存在するかどうかを確認するには、これを行うことができます。

以上がクイックヒント:PHPでデータをフィルタリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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