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