从_Request,_Post和_Get修剪空间的缺点?

时间:2014-10-27 20:12:23

标签: php post get request trim

问题

我在一个相当大的平台上遇到问题,用户可以在输入的开头和结尾输入包含空格的数据。这会导致问题。我知道我可以修改JavaScript验证,但是这个网站有大量的页面和表单。查找和更改每个事件将是一场噩梦。

解决方法

由于所有表单和页面共享index.php,我想到了在平台处理任何控制器/路由处理之前拦截request / get / post变量的想法。

注意:我知道这是一种非常便宜的方式。但必须立即采取行动,直到我能够以正确的方式做到最好。这完全正常运作。我只是有几个问题。

$_REQUEST   = array_map('trim',$_REQUEST);
$_GET       = array_map('trim',$_GET);
$_POST  = array_map('trim',$_POST);

个值得关注的

  1. 是否存在此代码出错的实际合法方案?

  2. 是否有重大影响?

  3. 是否存在安全漏洞?

  4. 是否存在使用trim()破坏数据完整性的风险?

2 个答案:

答案 0 :(得分:1)

  1. 我无法想到。修剪只会修剪字符串的前导和尾随空格。但是,它会在嵌套数组上失败。
  2. 这在某种程度上影响了表现,但并不重要。但请注意,即使没有发布数据,这也会在每个index.php调用上运行。
  3. 修剪不会造成安全漏洞。如果您在格式化数据的后续页面中验证并清理用户输入,则不应该是任何格式。
  4. 我不能在没有进一步了解的情况下回答这个问题。
  5. 如果这只是一个临时的解决方法,那么它将完成这项工作。但是我不会永远这样做,我建议你尽可能地逐场修复它。

答案 1 :(得分:0)

嗯,这是 DANGEROUS ,我会推荐这个。

原因如下:

如果任何页面上有表单,并且这些表单包含密码字段,则用户可能选择以空格开头或结尾的密码! (是的,密码中的空格绝对没问题,因为无论如何你都要加密密码)

所以问题是:

从现在开始修剪所有前导和结束空格后,已经使用此类密码登录的用户将无法再登录(因为每次他都尝试提交有效密码(开始或结束时)有空格)你的方法是删除那些空格。虽然他需要这些空间登录)。

此外,尝试使用以空格开头或结尾的密码创建新帐户的新用户永远无法登录EVER。因为他甚至不知道他的密码被修剪了。

老实说:小心这样的事情!