2012-10-11 38 views
3

我一直在寻找最有效的清理用户输入的方法。我的应用程序是一个简单的发布请求,用于验证用户。在网上寻找,我可以找到更多的十几种不同的“最好”的做法。很多这些方法使用不推荐使用的php函数或者看起来过于复杂。为了连接到我的sql数据库,我使用了PDO类。PHP PDO清洁用户输入

在寻找我自己的功能,我迷迷糊糊翻过这一点:

与绑定参数预处理语句不仅更加轻便,更加方便,不受SQL注入,但往往要快得多比插值查询执行,因为服务器和客户端都可以缓存查询的编译形式。

我已经使用的准备方法创建我的发言。这是否意味着我可以安全地防范SQL注入攻击?还有什么我应该担心的?

回答

2

如果绑定通过与PDO预处理语句的所有用户数据,你应该从注射安全。你放入你的SQL语句的任何变量(如排序顺序),你都不绑定,是一个开放的攻击向量。

1

@Ray已经回答了这个问题的第一部分。 对于第二部分,由于您对用户进行了身份验证,因此您应该担心如何存储他们的密码,并使用某种单向加密哈希来加密盐。然后检查用户输入的密码中是否使用原始salt匹配数据库条目再次计算散列值。如果可能,请使用https进行身份验证步骤。

+0

谢谢xception。目前我正在使用不均匀的盐渍散列。在计算散列之后,我将盐添加到它并将其存储在数据库中。当用户进行身份验证时,我从数据库中获取salt并将其与提供的密码结合使用,以计算身份验证哈希。为了防止暴力攻击,我也放慢了哈希函数。 –

+1

您可以在一段时间内限制失败的身份验证尝试,而半小时内失败的身份验证尝试有10次对任何人都是足够的,并且会严重阻碍任何暴力破解尝试。 Spor la treaba :) – xception