ホームページ > バックエンド開発 > PHPチュートリアル > PHP の FILTER_SANITIZE_STRING の非推奨: 最適な代替オプションは何ですか?

PHP の FILTER_SANITIZE_STRING の非推奨: 最適な代替オプションは何ですか?

Linda Hamilton
リリース: 2024-12-01 11:14:10
オリジナル
273 人が閲覧しました

PHP's FILTER_SANITIZE_STRING Deprecation: What Are the Best Replacement Options?

FILTER_SANITIZE_STRING の非推奨: 混乱と予期せぬ結果の物語

FILTER_SANITIZE_STRING 定数と FILTER_SANITIZE_STRIPPED 定数の最近の非推奨により、これらの定数を入力に依存している PHP 開発者の間で懸念が生じています。サニタイゼーション。

非推奨の内容とその理由

FILTER_SANITIZE_STRING および FILTER_SANITIZE_STRIPPED は、以前は入力文字列から潜在的な XSS 脆弱性を削除するために使用されていました。ただし、これらのフィルターは混乱を招き、直感的ではない動作を示しました。 FILTER_SANITIZE_STRING は「<」間のすべての文字を削除しました。

開発者が意図した用途を誤解することが多かったため、PHP コミュニティは、これらのフィルターが解決するよりも混乱を引き起こしたと判断しました。入力のサニタイズは、FILTER_UNSAFE_RAW などの他のフィルターによってすでに適切に処理されています。

置換オプション

これらの非推奨のものを置き換えるオプションはいくつかあります。 filters:

  • FILTER_UNSAFE_RAW: このデフォルトの文字列フィルターはフィルタリングを実行しません。変更を加えずに生の文字列値が必要な場合は、これを使用します。
  • htmlspecialchars(): この関数を使用して、XSS 脆弱性が悪用される可能性のある特殊文字をエンコードします。ただし、入力ではなく出力に適用することを忘れないでください。
  • カスタム ポリフィル: FILTER_SANITIZE_STRING および FILTER_SANITIZE_STRIPPED の特定のフィルタリング動作が必要な場合は、正規表現ベースのポリフィルを作成できます。として
function filter_string_polyfill(string $string): string
{
    $str = preg_replace('/\x00|<[^>]*>?/', '', $string);
    return str_replace(["'", '"'], ['&#39;', '&#34;'], $str);
}

黄金律を覚えておいてください

入力のサニタイズは、XSS 攻撃に対する信頼できる防御とみなされるべきではないことを強調することが重要です。代わりに、開発者は出力をエスケープして、潜在的に危険なコンテンツがページに挿入されるのを防ぐことに重点を置く必要があります。

以上がPHP の FILTER_SANITIZE_STRING の非推奨: 最適な代替オプションは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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