【问题标题】:Catching SQL Injection and other Malicious Web Requests捕获 SQL 注入和其他恶意 Web 请求
【发布时间】:2010-09-05 07:15:56
【问题描述】:

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

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

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

【问题讨论】:

    标签: sql xss sql-injection


    【解决方案1】:

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

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

    你的权利,这一切以前都做过。您不必完全重新发明轮子,但由于每个人的车轴直径不同,您必须重新设计一个轮子。

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

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

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

    【讨论】:

      【解决方案2】:

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

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

       DROP TABLE users;
      

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

          要记住一点:在某些国家/地区(即欧洲大部分地区),人们没有静态 IP 地址,因此不应永久列入黑名单。

          【讨论】:

            【解决方案5】:

            Oracle 有一个online tutorial about SQL Injection。即使您想要一个现成的解决方案,这也可能会为您提供一些关于如何更好地使用它来保护自己的提示。

            【讨论】:

              【解决方案6】:

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

              【讨论】:

                【解决方案7】:

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

                【讨论】:

                  【解决方案8】:

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

                  【讨论】:

                    猜你喜欢
                    • 2016-11-05
                    • 1970-01-01
                    • 2016-11-18
                    • 1970-01-01
                    • 2019-02-04
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多