我最近一直在查找SQL注入,它们是什么,它们做了什么以及如何阻止它们。大多数地方都会讨论用户在选择的雄蕊中存储的用户名,导致问题,例如'OR 1,但如果我只使用自动递增的id来从数据库中选择信息而不是用户输入值,这也会阻止sql注入?
答案 0 :(得分:1)
SQL Injection专门适用于查询的形状 - 它没有说明可能会意外泄露其他方式信息的查询。
SQL注入是一种代码注入技术,用于攻击数据驱动的应用程序,其中恶意SQL 语句[或表达式] 被插入到输入字段中以供执行。
使用占位符消除了SQL注入 1 ,
的但.. 强> 的
..仅仅因为系统没有SQL注入并不意味着它对其他漏洞是安全的。
例如,想象一下这个查询,其中@OWNER表示一个占位符。
select *
from emails
where owner = @OWNER
此查询是免费来自SQL注入,但如果攻击者可以指定任意“OWNER”值,那么他们可以访问其他人的电子邮件 - 哎呀!这只是一个安全漏洞;不是SQL注入。
1 使用来自变量的所有数据的占位符。
是否来自用户无关紧要。如果值保证为整数(即使是自动增量列中的一个)也无关紧要。只需持续使用占位符 - 然后您就可以获得更清晰的查询,并有更多时间专注于其他问题。
答案 1 :(得分:0)
每个关注SQL注入的人都必须明白没有办法利用不存在的注入。另一方面,一旦注入可能,可能存在无限可能的漏洞。
意味着人们永远不应该关心特定的漏洞。但始终专注于注射不可能。