Die Flags werden in einer different page of the documentation erläutert.
FILTER_FLAG_STRIP_LOW
Streifen Bytes in der Eingabe, die einen numerischen Wert < 32, insbesondere null bytes und andere control characters wie die ASCII Glocke hat. Dies ist eine gute Idee, wenn Sie eine Eingabe an eine andere Anwendung übergeben möchten, die null-terminated strings verwendet. Im Allgemeinen Zeichen mit einer Unicode Codepoint niedriger als 32 sollten nicht in eine Benutzereingabe auftreten, mit Ausnahme der Zeilenenden 10 und 13.
FILTER_FLAG_STRIP_HIGH
Streifen Bytes in der Eingabe, die einen numerischen Wert> 127 haben. In fast jeder Kodierung repräsentieren diese Bytes Nicht-ASCII-Zeichen wie ä
, ¿
, 堆
usw. Das Übergeben dieses Flags kann ein Pflaster für broken string encoding sein, das ein security vulnerability werden kann. Nicht-ASCII-Zeichen sind jedoch bei praktisch allen Benutzereingaben zu erwarten.
Fassen wir zusammen:
filter_var("\0aä\x80", FILTER_SANITIZE_STRING) == "\0aä\x80"
filter_var("\0aä\x80", FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW) == "aä\x80"
filter_var("\0aä\x80", FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH) == "\0a"
filter_var("\0aä\x80", FILTER_SANITIZE_STRING,
FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH) == "a"
Es wäre toll, wenn es eine STRIP_LOW_EXCEPT_NEWLINB Flagge war, seit es uns gibt Der Fall, in dem Newline-Zeichen aus Textfelder festgehalten werden. Leider gibt es keine, so dass dieser spezielle Fall behandelt werden muss. – itpastorn
etwas funktioniert nicht in Ihren Beispielen, bitte werfen Sie einen Blick https://eval.in/935865 –
Dies ist ein gutes Beispiel https://eval.in/935902 –