捕获SQL注入和其他恶意Web请求
我正在寻找一种工具,该工具可以检测恶意请求(例如明显的SQL注入获取或者发布),并将立即禁止请求者的IP地址/将其添加到黑名单中。我知道,在理想的世界中,我们的代码应该能够处理此类请求并相应地对其进行处理,但是即使该站点可以免受此类攻击的侵害,该工具也具有很大的价值,因为它可能导致节省带宽,防止分析膨胀等
理想情况下,我正在寻找一种跨平台(LAMP / .NET
)解决方案,该解决方案的层次要高于技术堆栈。也许在Web服务器或者硬件级别。不过,我不确定是否存在。
无论哪种方式,我都想听听社区的反馈,以便我可以了解在实施和方法方面的选择。
解决方案
回答
通用工具的问题在于,很难提出仅与真正攻击相匹配的一组规则。
SQL关键字都是英文单词,请不要忘记该字符串
DROP TABLE users;
在包含例如编程问题答案的表单字段中完全有效。
唯一明智的选择是在将输入传递到数据库之前先对其进行清理,但无论如何都要对其进行传递。否则,许多完全正常的非恶意用户将被禁止访问网站。
回答
在某些情况下可能有效的一种方法是采用sql字符串,如果我们天真地使用表单数据,它将运行该字符串,并将其传递给一些计算实际执行的语句数的代码。如果它大于预期的数字,则很有可能尝试进行注入,尤其是对于不太可能包含控制字符(例如用户名)的字段。
像普通文本框之类的东西会更难一些,因为此方法返回假阳性的可能性更大,但这至少是一个开始。
回答
要记住的一件事:在某些国家(即欧洲大部分地区),人们没有静态IP地址,因此黑名单不应永远存在。
回答
现在,我考虑了一下,类似于用于阻止垃圾邮件的贝叶斯过滤器也可能工作得很好。如果我们为每个字段收集了一组普通文本和一组sql注入,则可以训练它来标记注入攻击。
回答
我们几乎以错误的方式看待它,没有3party工具不知道应用程序方法/命名/数据/域将无法完美保护我们。
诸如SQL注入预防之类的东西必须包含在代码中,并且最好由编写SQL的人员来编写,因为他们会知道那些字段中应该/不应该包含的内容(除非项目有非常好的文档)
权利,这一切之前都已完成。我们不必完全重新发明轮子,但由于每个人的轴直径不同,我们必须雕刻一个新的轮子。
这不是一个即插即用的问题,我们确实必须熟悉SQL注入的确切含义,然后才能阻止它。这是一个偷偷摸摸的问题,因此需要同样的偷偷摸摸的保护。
这两个链接教给我的知识远远超过了该主题的基础知识,并帮助我更好地表达了我将来对未回答的特定问题的查找。
- SQL注入
- SQL注入攻击示例
尽管这并不是一个100%的查找程序,但它会"告诉我们"现有代码中存在的问题,但是与webstandards一样,一旦通过此测试就不要停止编码。
- 利用我
回答
Oracle已获得有关SQL注入的在线教程。即使我们需要现成的解决方案,这也可能为我们提供一些提示,说明如何更好地使用它来保护自己。
回答
我的一个站点最近被SQL注入攻击了。它为数据库中的每个文本字段添加了一个指向病毒的链接!解决方法是添加一些代码以查找SQL关键字。幸运的是,我是用ColdFiusion开发的,因此代码位于我的Application.cfm文件中,该文件在每个网页的开头运行,并查看所有URL变量。维基百科也有一些很好的链接可以提供帮助。