24

我正在寻找一种可以检测恶意请求(例如明显的 SQL 注入获取或帖子)并会立即禁止请求者的 IP 地址/添加到黑名单的工具。我知道,在理想的世界中,我们的代码应该能够处理此类请求并相应地处理它们,但是即使站点可以免受此类攻击,这种工具也有很多价值,因为它可能导致节省带宽,防止分析膨胀等。

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

无论哪种方式,我都想听听社区的反馈,以便了解我在实施和方法方面的选择。

4

8 回答 8

11

您几乎以错误的方式看待它,没有不了解您的应用程序方法/命名/数据/域的 3party 工具将能够完美地保护您。

像 SQL 注入预防这样的东西必须在代码中,最好由编写 SQL 的人编写,因为他们会知道这些领域应该/不应该是什么(除非你的项目有非常好的文档)

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

这不是一个即插即用的问题,您确实必须先熟悉 SQL 注入的确切含义,然后才能阻止它。这是一个偷偷摸摸的问题,所以它需要同样偷偷摸摸的保护。

这 2 个链接教会了我更多关于该主题的基础知识,并帮助我更好地表达我未来对未回答的特定问题的查找。

虽然这不是一个 100% 的查找器,但它会“向您展示”现有代码中存在的问题,但与 web 标准一样,一旦您通过此测试,就不要停止编码。

于 2008-08-04T15:43:50.063 回答
5

通用工具的问题在于,很难提出一组只匹配真正攻击的规则。

SQL关键字都是英文单词,别忘了字符串

 DROP TABLE users;

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

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

于 2008-08-04T15:11:16.663 回答
3

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

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

于 2008-08-04T15:20:17.973 回答
3

需要记住的一件小事:在一些国家(即欧洲大部分地区),人们没有静态 IP 地址,因此黑名单不应该永远存在。

于 2008-08-04T15:22:04.380 回答
3

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

于 2008-08-05T17:38:53.840 回答
0

现在我想一想,类似于用于阻止垃圾邮件的贝叶斯过滤器也可能工作得很好。如果您为每个字段收集一组普通文本和一组 sql 注入,您也许可以训练它来标记注入攻击。

于 2008-08-04T15:26:05.013 回答
0

我的一个网站最近被 SQL 注入攻击了。它为数据库中的每个文本字段添加了一个病毒链接!解决方法是添加一些查找 SQL 关键字的代码。幸运的是,我是在 ColdFiusion 中开发的,所以代码位于我的 Application.cfm 文件中,该文件在每个网页的开头运行,它会查看所有 URL 变量。维基百科也有一些很好的链接可以提供帮助。

于 2008-09-16T14:04:17.573 回答
0

有趣的是,几年后谷歌是如何实现这一点的,他们一起删除了 URL,以防止 XSS 攻击和其他恶意活动

于 2014-07-24T05:18:24.343 回答