我想知道是否存在针对SQL注入的任何其他措施,可以使用参数化查询和验证数据。 谢谢!
答案 0 :(得分:0)
显然,除了您在客户端上执行的任何操作外,还要确保您在服务器端验证数据。
此外,如果您正在谈论网络,请确保您正在验证所有数据,即QueryString和Cookie值以及表单字段。
我知道这是谷歌的第一次热播,但我不时阅读这篇文章并真正评价它(再次与网络有关): http://www.securiteam.com/securityreviews/5DP0N1P76E.html
答案 1 :(得分:0)
我总是通过自定义杀毒服务器端运行我的用户输入文本,因此我可以删除所有令人讨厌的东西,以防它通过。 (&“='等)
除了我调用的存储过程之外,我的代码中没有任何SQL语句,所以即使他们确实发现了漏洞,他们也必须在触摸表之前弄清楚我的存储过程。
在存储过程参数中,您可以限制文本大小,例如VARCHAR(10),因此如果您通常期望字符串“123456”和“12345'和UNION SELECT * FROM MEMBERS INNER JOIN MEMBER_ADDRESS ON ID”通过,存储过程不喜欢它。
最后一点,尝试捕获所有返回的异常,并尝试优雅地处理它们。有时您会看到网站显示“无法连接到数据库,'mdatabase.member中不存在'USER_ID'”。让某人嗅到你数据库架构的嗅觉,就会开始蠢蠢欲动。
答案 2 :(得分:0)
上面的所有好答案,我所做的是创建一个脚本,扫描所有表并为表名和列创建白名单然后我用它来验证任何应该是表/列名称的用户输入,因为他们不'进入参数查询。其他任何东西都通过PDO Bind参数化了!