validate - sanitize() php
FILTER_FLAG_STRIP_LOW vs FILTER_FLAG_STRIP_HIGH? (2)
Sabes que estoy hablando de la función filter_var
en PHP 5.
He visitado http://php.net/manual/en/filter.filters.sanitize.php pero todavía tengo la pregunta:
¿Cuáles son las diferencias exactas ?
Por favor, proporcione un ejemplo, para que se pueda aclarar más fácilmente.
Las banderas se explican en una página diferente de la documentación .
FILTER_FLAG_STRIP_LOW
bytes en la entrada que tienen un valor numérico <32, especialmente los bytes nulos y otros caracteres de control como el timbre ASCII. Esta es una buena idea si pretende pasar una entrada a otra aplicación que utiliza cadenas terminadas en nulo . En general, los caracteres con un punto de código Unicode inferior a 32 no deben aparecer en la entrada del usuario, excepto los caracteres de nueva línea 10 y 13.
FILTER_FLAG_STRIP_HIGH
bytes en la entrada que tienen un valor numérico> 127. En casi todas las codificaciones, esos bytes representan caracteres no ASCII tales como ä
, ¿
, 堆
etc. Pasar este indicador puede ser una ayuda de banda para la codificación de cadenas rotas , lo que puede convertirse en una vulnerabilidad de seguridad . Sin embargo, se esperan caracteres no ASCII en prácticamente todas las entradas del usuario.
Para resumir:
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"
FILTER_FLAG_STRIP_LOW
Eliminar caracteres con valor ASCII
< 32
FILTER_FLAG_STRIP_HIGH
Eliminar caracteres con valor ASCII
> 127