看见 PHP Arch 上重新提及 Fliter 模块 ,的确这个模块能节省我们不少的时间,这里再次整理下。
$_GET
和 $_POST
等用户提供的数据如果使用不当,如验证、过滤不全面,就很容易造成安全问题。通常情况下,我们会编写「一坨」正则来验证数据格式是否合法。
现在,有另外种方法让这过程变得更加的可靠和高效。
在 PHP5.2 中,内置了 Filter 模块 ,用于变量的验证和过滤。
过滤变量等操作可以 参看我原先提及的 ,这里我们看下如何直接过滤用户输入的内容。
Fliter 模块对应的 filter_input
函数使用起来非常的简单,例如我们过滤用户输入名为 sample 的 GET 参数为整型,那么可以这样写
filter_input(INPUT_GET, "sample", FILTER_SANITIZE_NUMBER_INT);
filter_input
的参数分别是用户输入类型、对应的输入名称、以及过滤(验证)常量。
目前 filter_input
支持下面几种用户输入
INPUT_GET // 对应 $_GET
INPUT_POST // 对应 $_POST
INPUT_COOKIE // 对应 $_COOKIE
INPUT_SERVER // 对应 $_SERVER
INPUT_ENV // 对应 $_ENV
配合 内置提供的各种验证标记符 ,就可以解决类似的用户输入过滤等「体力活」。
最后,还是需要再提下 Filter 的个不大不小的陷阱
filter_var('abc', FILTER_VALIDATE_BOOLEAN); // bool(false)
filter_var('0', FILTER_VALIDATE_BOOLEAN); // bool(false)
总体而言,这并不影响我们去尝试它 :^)
-- EOF --
造了好几年轮子了..Orz...
参数太多了,懒得记,自己封装下好了
为什么 filter 不受欢迎,看看下面就知道了 。
filter_input(INPUT_GET, \"sample\", FILTER_SANITIZE_NUMBER_INT);
比 java 还长
@(int)$_GET['sample'];
要不就自己弄一个吧
my_get(\"sample\",0,'int');
这短多了
我一个 g_int('sample'); 就搞定了。
我还不知道filter_input的参数可以写得那么简单哦~!
这个参数也太。。。。。
测试下新皮肤的功能是否正常
字体可以再搞下。
在win下用firefox看着有一点怪怪的。
kissy 的皮肤捏?小明子要自觉啊
@evan kissy 的皮肤已经托人在处理,少安毋躁呀…
[...]96.【PHP】$_GET 和 $_POST 等用户提供的数据如果使用不当,如验证、过滤不全面,就很容易造成安全问题。通常情况下,我们会编写“一坨”正则来验证数据格式是否合法。详情请参阅:http://www.gracecode.com/archives/3029/ (明城)[...]
[...]文章来源[...]
的确如此,filter 这个东西,很鸡肋,对于数据的获取的处理,很难有一个完善的框架,因为大家都需求太不一样了,与其搞一个不伦不类的框架,不如自己写一组封装的函数,更来得直接,明了