Ruby on rails 我应该转向MongoDB以避免Rails中的SQL注入漏洞吗?

Ruby on rails 我应该转向MongoDB以避免Rails中的SQL注入漏洞吗?,ruby-on-rails,mongodb,database-design,security,sql-injection,Ruby On Rails,Mongodb,Database Design,Security,Sql Injection,最近披露的Rails SQL注入漏洞引起了人们的极大关注。我不太擅长处理安全问题,所以我感到不安。我听说MongoDB不易受到这种攻击 这是永久迁移到MongoDB的好理由吗?否。仅仅因为SQL数据库容易受到SQL注入攻击,并不是迁移到MongoDB的好理由 MongoDB在某些用例中非常好,特别是在需要无模式集合的情况下 如果您需要存储关系数据,那么关系数据库将为您提供更好的服务 简而言之,如果您害怕SQL注入,请学习如何清理输入。不要移动到MongoDB 新发现的漏洞不会影响所有人。有关更多

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


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

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

MongoDB在某些用例中非常好,特别是在需要无模式集合的情况下

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

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

新发现的漏洞不会影响所有人。有关更多详细信息。

SQL!=NoSQL 使用SQL的关系数据库不是NoSQL的逐个功能替换。根据您的问题领域,您有时可以做出不同的体系结构或设计决策,使其中一个优于另一个,但您不能简单地将它们作为备件替换掉,因为它们具有非常不同的设计目标和性能特征

所有软件都有风险 软件安全是一个大话题,远远超出了SO问题的范围。然而,从一个被广泛使用并快速修补的产品切换到一个你不了解的产品并不是一个很好的风险管理权衡


事实上,您所指的漏洞是一个Rails漏洞,该漏洞已被修补;您不能保证将来不会有其他针对MVC或操作系统堆栈不同部分的Ruby或Rails漏洞,或者实际上是网络或操作系统漏洞。因此,我不确定您认为从风险管理的角度来看,将SQL描述为故事中的内在罪魁祸首会带来什么好处。

SQL注入是一个几十年来众所周知且众所周知的问题。有一些编码实践使SQL注入在您遵守它们时完全不可能:

  • 在将所有变量放入查询之前,通过转义函数运行它们
  • 使用事先准备好的陈述
  • 使用存储过程
始终至少使用其中一种实践,您不必害怕SQL注入

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


此外,正如CodeGnome指出的,MongoDB并不是SQL数据库的替代品。它有一个完全不同的哲学。83%的MongoDB问题都是由那些试图像使用关系数据库一样使用MongoDB的人提出的,他们想知道为什么它不起作用。

只需使用标准PDO库,通常它们都有非常严格的安全性,而且只不过没有使用一个会让你容易受到攻击的库,是的,MongoDB可能会受到注入的影响,但与PHP不同的是注入PDO,这个问题是关于rails的。我确信rails有一个,只是一个库,它可以生成准备好的语句等等。我以PDO为例投票结束,因为我觉得这个问题可以通过一个超常规的卡通来更好地解决。嗨,迈克。对不起,如果我的问题听起来很傻。考虑到我的应用程序从用户那里拿钱,我很担心自己无法解决这个问题。如果可以的话,请告诉我。谢谢你的建议和参考。这让我冷静下来。正如xbonez所说,rails开发只会影响一个相当特定的场景。这并不像最初所说的那样是一个广泛存在的问题。谢谢你:
新手风险>黑客风险