FILTER_FLAG_STRIP_LOW与FILTER_FLAG_STRIP_HIGH?
2022-08-30 20:51:40
参考 PHP 5 中的函数:filter_var
我已经访问了它的文档:http://php.net/manual/en/filter.filters.sanitize.php,但我仍然有这个问题:
确切的区别是什么?
为了更简单的澄清,请举例说明。
参考 PHP 5 中的函数:filter_var
我已经访问了它的文档:http://php.net/manual/en/filter.filters.sanitize.php,但我仍然有这个问题:
确切的区别是什么?
为了更简单的澄清,请举例说明。
这些标志在文档的不同页面中进行了说明。
FILTER_FLAG_STRIP_LOW
去除输入中数值<32 的字节,最明显的是空字节和其他控制字符,如 ASCII 铃铛。如果您打算将输入传递给另一个使用空终止字符串的应用程序,这是一个好主意。通常,Unicode 码位小于 32 的字符不应出现在用户输入中,换行符 10 和 13 除外。
FILTER_FLAG_STRIP_HIGH
去除输入中数值为 >127 的字节。在几乎每个编码中,这些字节表示非 ASCII 字符,如 、 等。传递此标志可能是中断字符串编码的创可贴,这可能成为一个安全漏洞。但是,在几乎所有用户输入中都需要非 ASCII 字符。ä
¿
堆
总结一下:
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
删除带值的字符ASCII
< 32
FILTER_FLAG_STRIP_HIGH
删除带值的字符ASCII
> 127