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

Translate

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

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

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

This question and all comments follow the "Attribution Required."

所有的回答

Translate

您几乎以错误的方式看待它,没有知道您的应用程序方法/命名/数据/域的3party工具将无法完全保护您。

诸如SQL注入预防之类的东西必须在代码中,并且最好由编写SQL的人来编写,因为他们会知道那些字段中应该/不应该的内容(除非您的项目有非常好的文档)

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

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

这两个链接不仅教会我入门的基本知识,还帮助我更好地表达了将来对未回答的特定问题的查找内容。

尽管这并不是一个100%的查找程序,但它会“告诉您”现有代码中存在的问题,但是与webstandards一样,一旦通过此测试就不要停止编码。

来源
Mat
Translate

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

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

 DROP TABLE users;

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

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

来源
Translate

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

像普通文本框之类的东西会更难一些,因为此方法返回假阳性的可能性更大,但这至少是一个开始。

来源
Translate

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

来源
Translate

甲骨文有一个有关SQL注入的在线教程。即使您需要现成的解决方案,这也可能为您提供一些提示,说明如何更好地使用它来保护自己。

来源
Translate

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

来源
Translate

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

来源
ECE
Translate

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

来源