可能重复:
如何防止 SQL 注入?
出于好奇,这更像是我试图确定的一个哲学观点。
我知道理论上,任何密码或加密都是可以破解的。
但是 SQL 注入是否也一样,只需找到适当的措施来处理 / 绕过站点中实施的任何安全措施?或者,注入是否可以通过一套固定的安全措施得到明确和肯定的防御?
我基本上想知道是否有可能通过注入无法破解我网站中的输入字段,或者是否总会存在一些漏洞?
可能重复:
如何防止 SQL 注入?
出于好奇,这更像是我试图确定的一个哲学观点。
我知道理论上,任何密码或加密都是可以破解的。
但是 SQL 注入是否也一样,只需找到适当的措施来处理 / 绕过站点中实施的任何安全措施?或者,注入是否可以通过一套固定的安全措施得到明确和肯定的防御?
我基本上想知道是否有可能通过注入无法破解我网站中的输入字段,或者是否总会存在一些漏洞?
易受 SQL 注入攻击是一个错误。一个构建良好的应用程序不会包含这样的错误,并且无论付出多少努力都不会出现这样的错误。
SQL 注入意味着输入的数据符合有效的 SQL(尽管通常以创造性的方式注入以产生不希望的结果)。
为了防止它,您只需要确保任何用户提供的数据都以不会被滥用的方式编码。
正如上面的链接(如何防止 PHP 中的 SQL 注入?)中所述,使用准备好的语句是防止 SQL 注入的最佳实践。
Sql注入是一种用来劫持网站安全的技术。
当输入字段中指定的数据未过滤转义字符并传递到 sql 查询执行时,就会发生 Sql 注入。
要测试 sql 注入,请参考以下 url。 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