为什么最好使用filter_input()?

时间:2009-04-20 14:14:30

标签: php security filter

这应该是一个基本问题,但为什么最好使用这样的东西:

$pwd = filter_input(INPUT_POST, 'pwd');

而不仅仅是:

$pwd = $_POST['pwd'];

PS:我知道过滤器扩展可以与更多参数一起使用,以提供额外的清理级别。

3 个答案:

答案 0 :(得分:14)

不是。 $_GET$_POST$_COOKIE$_REQUESTfiltered with default filter。没有其他参数的filter_input(INPUT_POST, 'pwd')也会使用默认过滤器。所以没有任何区别。

答案 1 :(得分:2)

应该对从客户端发送的任何数据(例如POST数据)进行清理和转义(甚至更好,检查完整性),以确保它不会扼杀您的网站。

SQL InjectionCross-site scripting是未能清理用户发送数据的两大威胁。

答案 2 :(得分:2)

不是更好。

请参阅filter_input上的文档 http://www.php.net//manual/en/function.filter-input.php

并单击“过滤器类型”链接。 http://www.php.net/manual/en/filter.filters.php

我只使用过整数过滤器...

$user_id = filter_input(INPUT_POST, 'user_id', FILTER_SANITIZE_NUMBER_INT);
$user = abs($user_id); // To get rid of any +/-