ホームページ > バックエンド開発 > PHPチュートリアル > 非推奨の PHP FILTER_SANITIZE_STRING を置き換える最善の方法は何ですか?

非推奨の PHP FILTER_SANITIZE_STRING を置き換える最善の方法は何ですか?

Patricia Arquette
リリース: 2024-12-03 19:39:14
オリジナル
399 人が閲覧しました

What's the Best Way to Replace the Deprecated PHP FILTER_SANITIZE_STRING?

定数 FILTER_SANITIZE_STRING の非推奨

PHP 8.1 のリリースにより、定数 FILTER_SANITIZE_STRING は非推奨になりました。このため、これまで文字列入力のサニタイズにこのフィルターに依存していた開発者の間で懸念が生じています。

FILTER_SANITIZE_STRING が非推奨になったのはなぜですか?

PHP コミュニティによると、FILTER_SANITIZE_STRING には不明な点がありました。目的が異なり、混乱を招く可能性があります。その機能について明確な説明を提供せずに、任意のコンテンツを削除しました。さらに、より効果的な文字列サニタイズ技術に置き換えられました。

何に置き換えることができますか?

非推奨の文字列を置き換えるオプションはいくつかあります。 FILTER_SANITIZE_STRING:

  • FILTER_UNSAFE_RAW: これはデフォルトの文字列フィルタであり、フィルタリングは提供されません。サニタイズが必要ない場合に使用できます。
  • htmlspecialchars(): この関数は、クロスサイト スクリプティング (XSS) の脆弱性を防ぐために特殊文字をエンコードします。これは、入力データではなく、出力データをエンコードするために使用する必要があります。
  • カスタム ポリフィル: FILTER_SANITIZE_STRING の機能を再作成する必要がある場合は、正規表現を使用してカスタム ポリフィルを作成できます。

例Polyfill

function filter_string_polyfill(string $string): string
{
    $str = preg_replace('/\x00|<[^>]*>?/', '', $string);
    return str_replace([&quot;'&quot;, '&quot;'], ['&amp;#39;', '&amp;#34;'], $str);
}
ログイン後にコピー

ベスト プラクティス: 出力のエスケープ

サニタイズは入力データではなく出力データに適用する必要があることを強調することが重要です。出力内の特殊文字をエスケープすることで、悪意のあるスクリプトやデータがアプリケーションに影響を与えるのを防ぎます。

以上が非推奨の PHP FILTER_SANITIZE_STRING を置き換える最善の方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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