捕获SQL注入和其他恶意Web请求

我正在寻找一种可以检测恶意请求的工具(例如显而易见的SQL注入获取或发布),并立即禁止请求者的IP地址/添加到黑名单。我知道,在一个理想的世界里,我们的代码应该能够处理这些请求并相应地对待它们,但是即使网站可以安全地抵御这种攻击,这样的工具也有很多价值,因为它可能导致节省带宽,防止分析的膨胀等。

理想情况下,我正在寻找比技术堆栈更高级别的跨平台( LAMP / .NET )解决方案;也许在网络服务器或硬件层面。不过,我不确定这是否存在。

无论哪种方式,我都希望听到社区的反馈意见,以便我可以看到我的选择可能与实施和方法有关。

0
额外 编辑
意见: 1
请选择最佳答案,谢谢。
额外 作者 mruanova,

8 答案

通用工具的问题在于,想出一套只能与真正的攻击相匹配的规则是非常困难的。

SQL关键字都是英文单词,不要忘记字符串

 DROP TABLE users;

在一个表单域中是完全有效的,例如,包含一个编程问题的答案。

唯一明智的选择是在将输入传递到数据库之前对输入进行清理,但仍然将其传递。否则很多完全正常的非恶意用户将被禁止访问您的网站。

0
额外

需要注意的一点是:在某些国家(即欧洲大部分地区),人们没有静态IP地址,所以黑名单不应该永远存在。

0
额外

一种可能适用于某些情况的方法是,如果您天真地使用了表单数据并将其传递给一些代码来计算实际执行的语句的数量,那么将会运行sql字符串。如果它大于预期的数字,那么尝试进行注射的机会很大,特别是对于不太可能包含控制字符(如用户名)的字段。

像普通文本框这样的东西会更难一些,因为这种方法很可能会返回误报,但这至少是一个开始。

0
额外

现在我想到了,与用于阻止垃圾邮件的贝叶斯过滤器类似的贝叶斯过滤器也可能适用。如果您为每个字段和一组sql注入聚集了一组正常文本,则可以对其进行训练以标记注入攻击。

0
额外

Oracle有一个关于SQL注入的在线教程。即使你想要一个现成的解决方案,这可能会给你一些提示,如何更好地使用它来保护自己。

0
额外

有趣的是,这是多年后谷歌和他们一起去除URL以防止XSS攻击和其他恶意活动

0
额外

你几乎没有看到它的方式,没有意识到你的应用程序方法/命名/数据/域的第三方工具将能够完全保护你。

类似SQL注入预防的东西必须存在于代码中,并且最好由编写SQL的人编写,因为他们会知道这些字段应该/应该是什么(除非您的项目具有非常好的文档)

你的权利,这一切都已经完成。你不需要重新发明轮子,但是由于每个人的轮轴直径不同,你必须雕刻一个新轮子。

这不是一个插入和运行的问题,你必须先熟悉SQL注入是什么,然后才能阻止它。这是一个偷偷摸摸的问题,所以它需要同样偷偷摸摸的保护。

这两个环节教给我的远远不止是关于这个主题的基础知识,并且帮助我更好地表达了未来在未回答的具体问题上的查找。

虽然这不是一个100%的发现者,但它会告诉你现有代码中存在的问题,但是就像web标准一样,一旦你通过了这个测试,就不要停止编码。

0
额外

One of my sites was recently hacked through SQL Injection. It added a link to a virus for every text field in the db! The fix was to add some code looking for SQL keywords. Fortunately, I've developed in ColdFiusion, so the code sits in my Application.cfm file which is run at the beginning of every webpage & it looks at all the URL variables. Wikipedia has some good links to help too.

0
额外