2

流行的开源 Web 框架有多安全?

我对 Rails 和 DJango 等流行框架特别感兴趣。

如果我正在构建一个要进行大量电子商务的网站,可以使用 DJango 和Satchmo之类的框架吗?

安全性是否因为它们的开放架构而受到损害?

我知道作为操作系统并不意味着对黑客开放,Linux 使用一流的身份验证机制,但网络是一个不同的游戏。

在这方面可以做些什么?

更新:

谢谢你们的回答。

我知道我必须为安全的电子商务应用程序找到合适的托管服务,并且需要额外的安全层。

我知道 Django 和 Rails 的设计考虑到了安全方面,最常见的形式攻击,如 XSS、注入等。(Django book有一个关于安全的 ch )

我期待安全专家的评论。如果您是安全专家,您会推荐一个可能会流行的重要站点,该站点构建在 DJango 或 Rails 上吗?

4

4 回答 4

5

许多人说通过默默无闻的安全性是无效的。可以引用 Microsoft 产品、Adobe Reader 等作为证据,证明封闭源代码在防止安全问题方面并不比开源更有效。

许多开源倡导者认为,越多越好的方法是对抗与安全相关的错误的一种方法。然而,实际上,当您处理较小的应用程序或不那么流行的商业或开源应用程序时,通常很少有人关注。因此,某些黑帽会在谷歌代码中搜索带有安全漏洞的代码片段,这是真正的危险。

尽管如此,如果您使用的是相当流行的开源框架——我怀疑它是否比竞争的商业产品更安全。至少,您可以从具有非常活跃社区的开源产品中更快地获得与安全相关的错误修复。

但是,如果您认真考虑构建电子商务网站 - 您需要多层保护。一定要确保适当的防火墙和入侵保护/检测系统 (IPS/IDS) 到位。您可能需要为托管服务付费,该服务将提供除托管之外的安全安慰和监控服务。请记住,您的用户就是您的客户!任何违规行为都可能对企业造成灾难性影响。

于 2009-04-27T15:25:09.110 回答
4

一些答案只谈论开源与封闭和安全性,但既然你问到具体的框架,我想我会评论一下我对 Rails 的了解。

有一些特性可以间接补充安全性,也有一些特性是明确设计用于在 Rails 中实现安全性的:

  1. SQL 注入 - 通常鼓励 ActiveRecord 访问 Rails 应用程序中的数据库。如果使用得当,您可以避免可能导致通过 SQL 注入进行利用的字符串连接问题。这是对 Web 应用程序的最常见攻击方法之一。
  2. XSS - 为用户输入的 HTML 编码文本提供了易于使用的宏,并提供了用于清除用户可能已在字段中输入的 JavaScript 的代码。通过将这些结合使用,您可以帮助保护自己免受来来往往的跨站点脚本攻击。
  3. Cookie 操作 - Rails 中存储会话数据的默认机制是以 cookie 的形式将其发送给最终用户。但是,用户不能简单地更改该数据然后将其重新发送回服务器,因为它在发送之前使用冗长的私钥进行了签名。任何更改的会话数据都将立即对服务器显而易见。
  4. CSRF - 这个解释起来很复杂,但 Rails 为其表单提供了安全性,以确保传入的请求来自您实际发送给用户的表单。

还有更多的东西,但是像 Rails 这样的现代框架已经内置了支持来帮助您从一开始就获得更安全的 Web 应用程序,这很好。也许熟悉 Django 特性的人也可以参与进来。

于 2009-04-27T19:28:58.743 回答
3

在我参加的测试课程中(我同意),我总是说开源软件更安全,因为它们被更多人测试并被更多人改进。

隐藏代码源并不是保护应用程序的有效方法。它可能适用于特定软件,但对于广泛传播的框架,人们最终会弄清楚事情是如何工作的(http://en.wikipedia.org/wiki/Reverse_engineering

有使用开源框架的大型电子商务 Web 应用程序。如果您熟悉电子商务工具,那么您一定知道使用 Ruby on Rails 构建的 Shopify ( http://weblog.rubyonrails.org/2006/6/5/shopify-is-open-for-business )

他们还发布了ActiveMerchant

Active Merchant 是从电子商务系统 Shopify 中提取的。Shopify 要求一个简单而统一的 API 来访问具有非常不同的内部 API 的数十个不同的支付网关,这是设计该库的主要原则。

Active Merchant 自 2006 年 6 月以来一直在生产中使用,现在用于处理金融交易的大多数现代 Ruby 应用程序。

在我看来,使用像 Rails 这样的框架与使用专有框架相比,安全性至少会一样好,甚至更好。我不了解 django,因为我从未使用过它,但我听说它也一样好。

当然,您需要确保您的应用程序安全,不要仅仅依赖于框架!

于 2009-04-27T15:58:15.040 回答
3

我已经使用 Django 构建了多个站点,并使用 Satchmo 构建了一个店面。封闭源代码框架和开源框架之间的安全性没有区别,因为所有与安全性相关的信息对于您的安装都是唯一的。

例如,您的 settings.py 文件中的“秘密代码”是在您启动项目时唯一生成的。由您决定对用户密码进行加盐并保护您的加密密钥,就像在任何平台上一样。

关于 Django 需要注意的一点是,所有表单输入都是开箱即用的,所有表单输入都通过一个清理过程进行验证并“标记为安全”。您可以通过其cleaned_data字典访问表单的净化数据。

此外,所有模板都是自动转义的 HTML,因此注入攻击或跨站点脚本的风险几乎为零。

最后,这些模型提供了额外的安全层和验证,以防任何流氓数据通过。

至于 Satchmo,其到 paypal、visa 等的电子商务网关被上述公司接受并使用他们的 API,因此它们与任何其他支付网关一样安全。当然,您需要运行加密的 HTTPS 连接来进行信用卡支付,但这是普遍要求的,与您使用的框架无关。

于 2009-05-19T23:56:00.500 回答