使用WAF可以阻止正常的基于UNION的SQL注入,它可以过滤关键字如UNION, SELECT
。但我认为它可以通过SQL的内联评论语句旁路,如/*!UNION*/
和/*!SELECT*/
内联注释如何绕过SQL注入Web应用程序防火墙?
评论声明仅用于阅读目的,对吧?如果是这样,SQL服务器如何在注释中读取注入查询并执行它?
使用WAF可以阻止正常的基于UNION的SQL注入,它可以过滤关键字如UNION, SELECT
。但我认为它可以通过SQL的内联评论语句旁路,如/*!UNION*/
和/*!SELECT*/
内联注释如何绕过SQL注入Web应用程序防火墙?
评论声明仅用于阅读目的,对吧?如果是这样,SQL服务器如何在注释中读取注入查询并执行它?
使用WAF过滤关键字毫无意义。它不可能成功。看看这种绕过它的方法列表:http://ferruh.mavituna.com/sql-injection-cheatsheet-oku/(我发现在几秒钟内与谷歌链接。)
如果代码被正确写入,那就没有必要。
至于你的问题,MySQL的语法是/*!
是针对MySQL的特定命令。它旨在让您能够编写可移植的SQL(可以在任何数据库上运行),但仍能够发送MySQL特殊命令。
如果您使用支持数据占位符的数据库驱动程序,SQL注入应该不是问题。你试图做的事后检测是徒劳的,就像试图用一个有问题的苍蝇拍根除蟑螂侵扰一样。你不可能得到他们全部。
最好的做法是确保不可能首先向您的查询注入敌对数据。有many examples available on Booby Tables说明如何正确执行此操作。
感谢您的备忘单,但是我已经有同类型的东西了。你能否更详细地阐述答案的第二部分?如果它是一种特殊的查询,那么它将执行有效的查询并忽略开发者的注释? – Jones
@ William.Ebe我发现这个:http://dev.mysql.com/doc/refman/5.1/en/comments.html提到它存在,但没有记录所有可能的事情。 – Ariel
谢谢。全清! – Jones