【发布时间】:2010-10-20 14:04:22
【问题描述】:
这应该是一个基本问题,但为什么使用这样的东西更好:
$pwd = filter_input(INPUT_POST, 'pwd');
不仅仅是:
$pwd = $_POST['pwd'];
PS:我知道过滤器扩展可以与更多参数一起使用,以提供额外的清理级别。
【问题讨论】:
-
该问题的票数多于接受的答案。有趣...
这应该是一个基本问题,但为什么使用这样的东西更好:
$pwd = filter_input(INPUT_POST, 'pwd');
不仅仅是:
$pwd = $_POST['pwd'];
PS:我知道过滤器扩展可以与更多参数一起使用,以提供额外的清理级别。
【问题讨论】:
从客户端发送的任何数据(例如 POST 数据)都应该经过净化和转义(甚至更好的是经过完整性检查),以确保它不会破坏您的网站。
SQL Injection 和 Cross-site scripting 是未能清理用户发送数据的两个最大威胁。
【讨论】:
不是。 $_GET、$_POST、$_COOKIE 和 $_REQUEST 是 filtered with default filter。 filter_input(INPUT_POST, 'pwd') 没有附加参数也使用默认过滤器。所以根本没有区别。
【讨论】:
filter_input 与 htmlspecialchars 并注意到这似乎已经过时了。大多数 PHP 配置不再过滤此数据,您发布的链接甚至将默认配置值设置为“unsafe_raw”
"unsafe_raw",但这并没有改变这样一个事实,即使用 filter_input 而不使用 filter 参数不会为您提供任何额外的安全级别。
这不是更好。
请参阅有关 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 +/-
【讨论】: