所有输入字段都容易受到sql注入吗?

时间:2012-12-08 02:56:41

标签: php mysql sql-injection

  

可能重复:
  How to prevent SQL injection?

出于好奇,这更像是一个我试图确定的哲学观点。

我知道理论上,任何密码或加密都是可以破解的。

但SQL注入是否相同,只需要找到适当的措施来处理/绕过网站中实施的任何安全措施?或者注入一些可以明确且确定地使用一套固定安全措施的东西?

我基本上想知道我的网站中的输入字段是否有可能通过注入无法识别,或者是否总会存在某些漏洞?

3 个答案:

答案 0 :(得分:2)

易受SQL注入攻击是一个错误。精心构建的应用程序不会包含这样的错误,并且不会出现这样的错误。

答案 1 :(得分:1)

SQL注入意味着输入的数据符合有效的SQL(尽管通常以创造性的方式注入以产生不希望的结果)。

为了防范它,您只需确保以不会被滥用的方式对任何用户提供的数据进行编码。

正如上面的链接(How can I prevent SQL injection in PHP?)中所提到的,使用预准备语句是防止SQL注入的最佳实践。

答案 2 :(得分:0)

Sql注入是一种用于劫持网站安全性的技术。

当输入字段中指定的数据未针对转义字符进行过滤并传递到sql查询以供执行时,会发生Sql注入。

测试sql注入请参考以下网址。 http://sqlzoo.net/hack/

在上面的网址中,尝试在字段中为名称指定“'”,并在密码字段中指定“ OR 1 = 1#

因此得到的查询将是

      SELECT * from user where name='' OR 1=1#' and password='';

在上面的示例中,您可以注意到在输入字段中指定上述数据后查询被破坏,并且任何匿名用户都可以轻松登录到网站。

有几种技术可以阻止sql注入。

(1)输入数据必须使用mysql_real_escape_string进行过滤,同时传递给sql查询执行。

有关mysql_real_escape_string函数的更多详细信息,请参阅以下url中提到的文档。 http://php.net/manual/en/function.mysql-real-escape-string.php