Heim >Backend-Entwicklung >PHP-Tutorial >Wie ersetzt man veraltete PHP 8.1-String-Bereinigungsfilter (FILTER_SANITIZE_STRING und FILTER_SANITIZE_STRIPPED)?

Wie ersetzt man veraltete PHP 8.1-String-Bereinigungsfilter (FILTER_SANITIZE_STRING und FILTER_SANITIZE_STRIPPED)?

DDD
DDDOriginal
2024-12-05 07:13:13521Durchsuche

How to Replace Deprecated PHP 8.1 String Sanitization Filters (FILTER_SANITIZE_STRING and FILTER_SANITIZE_STRIPPED)?

Veraltete Filterkonstanten ersetzen: FILTER_SANITIZE_STRING und FILTER_SANITIZE_STRIPPED

Mit PHP 8.1 sind die Konstantenfilter FILTER_SANITIZE_STRING und FILTER_SANITIZE_STRIPPED geworden veraltet. Dies hat bei Entwicklern, die diese Filter zuvor zur String-Bereinigung verwendet haben, Bedenken geweckt.

Der Grund für die Ablehnung

Diese Filterkonstanten wurden als verwirrend und unklar in ihrem Zweck erachtet. Ihre Funktionalität überschnitt sich mit der anderer String-Filter, was zu Verwirrung und inkonsistenten Ergebnissen führte. Die PHP-Community hat beschlossen, ihren Support einzustellen.

Ersatzoptionen

Es stehen mehrere Optionen zur Verfügung, um diese veralteten Filter zu ersetzen:

  • Verwenden Sie FILTER_UNSAFE_RAW: Dies ist der Standard-String-Filter, der keine Filterung durchführt. Es eignet sich, wenn Sie keine spezielle Desinfektion benötigen.
  • Verwenden Sie htmlspecialchars() zur XSS-Prävention: Wenn Sie FILTER_SANITIZE_STRING hauptsächlich zur Vermeidung von XSS-Schwachstellen verwendet haben, ersetzen Sie es durch htmlspecialchars(). Diese Funktion sollte für die Ausgabe und nicht für die Eingabe aufgerufen werden, um einen wirksamen Schutz zu gewährleisten.
  • Erstellen Sie eine Polyfüllung: Wenn Sie das genaue Verhalten der veralteten Filter benötigen, können Sie eine Polyfüllung erstellen unter Verwendung regulärer Ausdrücke.

Der folgende Code demonstriert eine Polyfill-Funktion für filter_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);
}

Denken Sie daran, dass das Bereinigen von Eingaben weniger effektiv ist als das Escapen von Ausgaben. Konzentrieren Sie sich auf die Codierung potenziell gefährdeter Daten, bevor sie angezeigt oder verwendet werden.

Das obige ist der detaillierte Inhalt vonWie ersetzt man veraltete PHP 8.1-String-Bereinigungsfilter (FILTER_SANITIZE_STRING und FILTER_SANITIZE_STRIPPED)?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn