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

Catching SQL Injection and other Malicious Web Requests

提问人: 提问时间:8/4/2008 最后编辑:Unnikrishnan R 更新时间:10/19/2017 访问量:9431

问:

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

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

无论哪种方式,我都希望听到社区的反馈,以便我了解在实施和方法方面可能有哪些选择。

XSS SQL 注入

评论


答:

5赞 Mat 8/4/2008 #1

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

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

 DROP TABLE users;

在表单字段中完全有效,例如,包含编程问题的答案。

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

3赞 ricree 8/4/2008 #2

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

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

3赞 Michael Stum 8/4/2008 #3

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

0赞 ricree 8/4/2008 #4

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

11赞 Uberfuzzy 8/4/2008 #5

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

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

你的权利,这一切都已经做过了。你不必重新发明轮子,但你确实必须雕刻一个新的轮子,因为每个人的车轴直径都不同。

这不是一个插入和运行的问题,在防止它之前,您确实必须熟悉SQL注入到底是什么。这是一个偷偷摸摸的问题,所以它需要同样偷偷摸摸的保护。

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

虽然这个不是 100% 的发现器,但它会“向你展示”现有代码中存在的问题,但就像 Web 标准一样,一旦你通过了这个测试,就不要停止编码。

3赞 Mario Marinato 8/6/2008 #6

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

0赞 user7428 9/16/2008 #7

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

-1赞 ECE 7/24/2014 #8

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