【发布时间】:2015-08-02 12:35:41
【问题描述】:
为什么 query: *.php?page=%20%209999%20%20 和 id est *.php?page=%0a%0d9999%0a%0d 验证为 INT 并返回为 int(9999)?
$args=array('page'=>array('filter'=>FILTER_VALIDATE_INT)));
$ret=filter_input_array(INPUT_GET,$args);
var_dump($ret['page']);
【问题讨论】:
-
那些“URL 编码值”只是空格
%20和换行符%0A。 -
@mario 对,但是从什么时候开始空格和换行符是整数?
-
FILTER_VALIDATE_INT与intval()没有太大区别。它不会断言字符串是全数字的,它只是探测整数。 -
@mario 我明白了。我想在devpage上有点模糊。 =(
-
是的,过滤器模块是一个不错的想法,API 和文档有些笨拙,偏离了一些实现细节:]
标签: php security filtering sanitization filter-var