2014-10-27 34 views
0

问题

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

解决方法

由于所有的形式和页面共享的index.php,我觉得之前的任何控制器/路由处理是由处理平台拦截了请求/ GET/POST变量的想法。

注意:我知道这是一个非常便宜的方法。但是,必须立即采取行动,直到我至少能够以正确的方式开展工作。这是完美的,因为它是。我只是有一些担忧。

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

值得关注的问题

  1. 是否有任何实际合法场景中的代码会出错呢?

  2. 是否有重大业绩影响?

  3. 有没有安全缺陷?

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

+0

只需在使用它们时修剪这些值。 – 2014-10-27 20:15:12

+1

1.发布阵列结构的表单域时。 2.通常不会,但您始终可以使用分析器。 3.不清楚; Unicode空白字符数。 4.太宽泛。你没有任何关于你的数据的东西。 – mario 2014-10-27 20:17:14

+0

次优,但可能确定 – 2014-10-27 20:17:52

回答

1
  1. 我想不出任何。修剪将简单地修剪字符串的前导和尾随空格。但是,它会在嵌套数组上失败。
  2. 这种情况会影响性能,但它并不重要。但请注意,即使没有发布数据,这也会在每个index.php调用中运行。
  3. 修剪不会导致安全漏洞。如果您在格式化数据的后一页中验证并清理用户输入,则不应该有任何内容。
  4. 我不能没有进一步的知识回答这个问题。

如果这只是一个临时的解决方法,那么它会完成这项工作。但我不会永远这样做,我建议你在可以的时候逐个修正它。

0

嗯,这是危险和我会不是推荐这个。

这里的原因:

如果有任何页面的形式,这些形式包括密码字段开始或用空格结束,然后用户可以选择密码! (是的,密码中的空格绝对没问题,因为无论如何你都要加密密码)

所以问题是:

当你修剪所有领先的,从现在起结束空格,则谁是已经有这样的密码登录的用户将不再能够登录(因为每一次他尝试要提交他的有效密码(以空格开头或结尾),您的方法将删除这些空格,尽管他需要这些空格才能登录)。

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

说实话:请小心这样的事情!