0

我想知道除了使用参数化查询和验证数据之外,是否还有其他针对 SQL 注入的措施。谢谢!

4

3 回答 3

0

显然,除了您可能在客户端上做的任何事情之外,还要确保您在服务器端验证数据。

此外,如果您正在谈论网络,请确保您正在验证所有数据,即 QueryString 和 Cookie 值以及表单字段。

我知道这是谷歌上的第一个热门,但我确实不时阅读这篇文章并对其进行真正的评价(再次与网络有关): http ://www.securiteam.com/securityreviews/5DP0N1P76E.html

于 2011-07-20T08:41:07.363 回答
0

我总是通过自定义消毒服务器端运行我的用户输入文本,所以我可以删除所有讨厌的东西,以防它通过。(& " = ' 等)

除了我调用的存储过程之外,我的代码中没有任何 SQL 语句,因此即使他们确实发现了漏洞,他们也必须在接触表之前找出我的存储过程。

在存储过程参数中,您可以限制文本大小,例如 VARCHAR(10) 因此,如果您通常期望字符串“123456”和“12345' AND UNION SELECT * FROM MEMBERS INNER JOIN MEMBER_ADDRESS ON ID”通过,则存储的程序不会喜欢它。

最后一点,尝试捕获所有返回的异常,并尝试优雅地处理它们。有时您会看到网站显示类似“无法连接到数据库,'USER_ID' 在 mydatabase.member 中不存在”之类的信息。让某人嗅探一下您的数据库体系结构将开始进行漏洞利用。

于 2011-07-20T09:02:16.880 回答
0

有了上面所有好的答案,我所做的是创建一个脚本来扫描所有表并为表名和列创建白名单,然后我用它来验证任何应该是表/列名的用户输入,因为它们没有进入参数查询。其他任何东西都通过 PDO Bind 参数化!

于 2011-12-19T23:14:46.757 回答