PHP フィルターは、ユーザー入力などの安全でないソースからのデータを検証およびフィルターするために使用されます。
PHP フィルターとは何ですか?
PHP フィルターは、安全でないソースからのデータを検証およびフィルターするために使用されます。
ユーザー入力またはカスタム データの検証とフィルタリングは、Web アプリケーションの重要な部分です。
PHP のフィルター拡張機能は、データのフィルター処理を簡単かつ迅速に行うように設計されています。
なぜフィルターを使用するのですか?
ほぼすべての Web アプリケーションは外部入力に依存しています。通常、このデータはユーザーまたは他のアプリケーション (Web サービスなど) から取得されます。フィルターを使用すると、アプリケーションが正しい入力タイプを取得できるようになります。
外部データは常にフィルタリングする必要があります。
入力フィルタリングは、アプリケーションのセキュリティの最も重要なトピックの 1 つです。
外部データとは何ですか?
フォームからの入力データ
Cookie
サーバー変数
データベースクエリ結果
関数とフィルター
変数をフィルターするには、以下のいずれかのフィルター関数を使用します:
filter_var () - 指定したフィルターで単一の変数をフィルターします
filter_var_array() - 同じまたは異なるフィルターで複数の変数をフィルターします
filter_input - 入力変数を取得してフィルターします
filter_input_array - 複数の入力変数を取得してフィルターします同じまたは異なるフィルターを通してそれらを比較します
以下の例では、filter_var() 関数を使用して整数を検証します。
コードをコピー コードは次のとおりです。
$int = 123;
if( !filter_var($int, FILTER_VALIDATE_INT))
{
echo("整数が無効です");
}
else
{
echo("整数は有効です");
}
?>
コードをコピーコードは次のとおりです:
$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」と呼ばれる関連付けられた配列に入れる必要があります。フラグを使用する場合、フラグを配列にする必要はありません。
コードは次のとおりです。 : if(!filter_has_var(INPUT_GET, "メール"))
{
echo("入力タイプが存在しません"); }
else
{
if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL))
{
echo "電子メールが無効です"
}
; else
{
echo "電子メールは有効です"
}
}
?>;
例の説明:
上記の例には、「GET」メソッドを通じて送信される入力変数 (電子メール) があります。
タイプ「GET」の「電子メール」入力変数があるかどうかを検出します。
入力変数がある場合は、それが有効な電子メール アドレスであるかどうかを確認します
入力をサニタイズします
フォームから渡された URL をクリーンアップしてみましょう。
まず、探している入力データが存在することを確認します。
次に、filter_input() 関数を使用して入力データを精製します。
次の例では、入力変数 "url" が PHP ページに渡されます:
コードをコピーします コードは次のとおりです。 :
if(!filter_has_var(INPUT_POST, "url"))
{
echo("入力タイプが存在しません"); }
else
{
$url = filter_input(INPUT_POST,
"url", FILTER_SANITIZE_URL);
}
?> :
上記の例には、「POST」メソッドを通じて送信される入力変数 (url) があります。
コードは次のとおりです: < ?php $filters = array
("name" => array
(
"filter"=>FILTER_SANITIZE_STRING
),
"age" => ; 配列
(
"フィルター"=>FILTER_VALIDATE_INT,
"オプション"=>配列
(
"min_range"=>1,
"max_range" => ;120
)
),
"email"=>,
);
$result = filter_input_array(INPUT_GET, $filters); 🎜> if (!$result["age"])
{
echo("年齢は 1 から 120 までの数値である必要があります。
");
elseif (! $result["email"])
{
echo("電子メールが無効です。
")
}
else
{
echo ("ユーザー入力は有効です");
}
?>
上の例には 3 つの入力変数があります (name 、 age 、 email)
入力変数の名前を含む配列と、指定された入力変数のフィルターを設定します
filter_input_array 関数を呼び出します。パラメーターには GET 入力変数と設定したばかりの配列が含まれます
$result変数の「age」変数と「email」変数に不正な入力がないか確認してください。 (不正な入力がある場合)
filter_input_array() 関数の 2 番目のパラメーターには、配列または単一フィルターの ID を指定できます。
{ return str_replace("_", " ", $string); $string = "Peter_is_a_great_guy!";
echo filter_var($string, FILTER_CALLBACK,array("options"=>"convertSpace"));
上記のコードの結果は次のようになります:
Peter is a great guy! 例の説明:
上記の例はすべての "_" をスペースに変換します:
「_」をスペースに置き換える関数を作成します
filter_var() 関数を呼び出します。そのパラメーターは FILTER_CALLBACK フィルターと関数を含む配列です