Heim > Backend-Entwicklung > PHP-Tutorial > PHPs FILTER_SANITIZE_STRING-Abwertung: Was sind die besten Ersatzoptionen?

PHPs FILTER_SANITIZE_STRING-Abwertung: Was sind die besten Ersatzoptionen?

Linda Hamilton
Freigeben: 2024-12-01 11:14:10
Original
273 Leute haben es durchsucht

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

Veraltung von FILTER_SANITIZE_STRING: Eine Geschichte von Verwirrung und unbeabsichtigten Konsequenzen

Die kürzliche Verwerfung der Konstanten FILTER_SANITIZE_STRING und FILTER_SANITIZE_STRIPPED hat bei PHP-Entwicklern, die sich bei der Eingabe auf sie verlassen, Bedenken geweckt Bereinigung.

Was ist veraltet und warum?

FILTER_SANITIZE_STRING und FILTER_SANITIZE_STRIPPED wurden zuvor verwendet, um potenzielle XSS-Schwachstellen aus Eingabezeichenfolgen zu entfernen. Allerdings zeigten diese Filter ein verwirrendes und nicht intuitives Verhalten. FILTER_SANITIZE_STRING hat alle Zeichen zwischen „<“ entfernt. und das Ende der Zeichenfolge entfernt, NUL-Bytes entfernt und einfache und doppelte Anführungszeichen codiert.

Die PHP-Community stellte fest, dass diese Filter mehr Verwirrung stifteten als lösten, da Entwickler ihre beabsichtigte Verwendung oft missverstanden hatten. Die Eingabebereinigung wird von anderen Filtern wie FILTER_UNSAFE_RAW bereits angemessen gehandhabt.

Ersetzungsoptionen

Es gibt mehrere Optionen zum Ersetzen dieser veralteten Filter:

  • FILTER_UNSAFE_RAW: Diese Standardzeichenfolge Filter führt keine Filterung durch. Verwenden Sie diese Funktion, wenn Sie den Rohzeichenfolgenwert ohne Änderungen wünschen.
  • htmlspecialchars(): Verwenden Sie diese Funktion, um Sonderzeichen zu kodieren, die für XSS-Schwachstellen ausgenutzt werden könnten. Denken Sie jedoch daran, es auf die Ausgabe und nicht auf die Eingabe anzuwenden.
  • Benutzerdefinierte Polyfüllung: Für diejenigen, die das spezifische Filterverhalten von FILTER_SANITIZE_STRING und FILTER_SANITIZE_STRIPPED benötigen, kann eine Regex-basierte Polyfüllung erstellt werden wie folgt:
function filter_string_polyfill(string $string): string
{
    $str = preg_replace('/\x00|<[^>]*>?/', '', $string);
    return str_replace(["'", '"'], ['&#39;', '&#34;'], $str);
}

Denken Sie daran die Goldene Regel

Es ist wichtig zu betonen, dass die Eingabebereinigung nicht als zuverlässige Verteidigung gegen XSS-Angriffe angesehen werden sollte. Stattdessen sollten sich Entwickler darauf konzentrieren, die Ausgabe zu maskieren, um zu verhindern, dass potenziell gefährliche Inhalte in die Seite eingefügt werden.

Das obige ist der detaillierte Inhalt vonPHPs FILTER_SANITIZE_STRING-Abwertung: Was sind die besten Ersatzoptionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage