【问题标题】:Should I move to MongoDB to avoid SQL injection vulnerability in Rails? [closed]我应该迁移到 MongoDB 以避免 Rails 中的 SQL 注入漏洞吗? [关闭]
【发布时间】:2013-01-02 15:53:40
【问题描述】:

最近披露的 Rails SQL 注入漏洞引起了人们的极大关注。我不擅长处理安全问题,所以我很紧张。我听说 MongoDB 不容易受到这种攻击。

这是永久迁移到 MongoDB 的好理由吗?

【问题讨论】:

  • 只需使用标准 PDO 库,通常它们具有非常严格的安全性,只是不使用使您容易受到攻击的库,是的,MongoDB 可能会遭受注入,只是注入不同
  • PDO 是针对 PHP 的,这个问题是关于 Rails 的
  • 我确信有一个用于 Rails 的库,只是一个制作准备好的语句等的库,我以 PDO 为例
  • 投票结束,因为我觉得这个问题可以通过那些 Extranormal 卡通之一更好地解决..
  • 嗨,迈克。对不起,如果我的问题听起来很愚蠢。鉴于我的应用程序从用户那里拿钱,我非常担心自己无法解决问题。可以的话请赐教。

标签: ruby-on-rails mongodb database-design security sql-injection


【解决方案1】:

没有。仅仅因为 SQL 数据库容易受到 SQL 注入攻击,并不是迁移到 MongoDB 的好理由。

MongoDB 在某些用例中非常有用,尤其是在您需要无模式集合的情况下。

如果您需要存储关系数据,关系数据库会为您提供更好的服务。

简而言之,如果您害怕 SQL 注入,请学习如何清理您的输入。不要迁移到 MongoDB。

新发现的漏洞不会影响所有人。 Read here 了解更多详情。

【讨论】:

  • 感谢您的建议和参考。它让我平静下来。
  • 正如 xbonez 所说,rails 漏洞利用只会影响一个相当具体的场景。它不像最初提出的那样广泛存在。
【解决方案2】:

SQL != NoSQL

使用 SQL 的关系数据库不是 NoSQL 的逐个功能替代品。根据您的问题领域,您有时可以做出不同的架构或设计决策,偏向于另一种,但您不能像备件一样简单地将它们换掉,因为它们具有非常不同的设计目标和性能特征。

所有软件都有风险

软件安全是一个很大的话题,远远超出了 SO 问题的范围。但是,从广泛使用并快速修补的产品切换到您不了解的产品本质上并不是一个好的风险管理权衡。

事实上,您所指的漏洞是一个Rails 漏洞,该漏洞已被修补;你有零保证将来不会有其他 Ruby 或 Rails 漏洞——或者,事实上,网络或操作系统漏洞——针对 MVC 或操作系统堆栈的不同部分。因此,我不确定你认为从风险管理的角度来看,将 SQL 描绘成这个故事中固有的恶棍会得到什么。

【讨论】:

    【解决方案3】:

    SQL 注入是一个已知数十年且广为人知的问题。有一些编码实践使 SQL 注入完全不可能,如果你遵守它们:

    • 在将所有变量放入查询之前,通过转义函数运行所有变量
    • 使用准备好的语句
    • 使用存储过程

    始终至少使用其中一种做法,您不必害怕 SQL 注入。

    另一方面,MongoDB 是一项相当新的技术。目前尚不清楚哪种新手错误将是最典型的导致易受攻击的应用程序。也许有些事情就像 SQL 注入一样糟糕,每个人现在都在做却没有意识到。也许这个漏洞已经在黑帽黑客之间流传了。谁知道?

    此外,正如 CodeGnome 所指出的,MongoDB 并不是 SQL 数据库的直接替代品。它有一个完全不同的哲学。这里 83% 的 MongoDB 问题是由那些尝试将 MongoDB 当作关系数据库来使用并想知道为什么它不起作用的人提出的。

    【讨论】:

    • 感谢您:newbie risk > hacker risk
    猜你喜欢
    • 1970-01-01
    • 2020-12-26
    • 2018-09-09
    • 1970-01-01
    • 2022-12-05
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多