【问题标题】:Open Source Web Frameworks : Security [closed]开源 Web 框架:安全性 [关闭]
【发布时间】:2009-04-27 15:11:39
【问题描述】:

流行的开源 Web 框架的安全性如何?

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

如果我要建立一个做大量电子商务的网站,可以使用吗? 像 DJango 和 Satchmo 这样的框架?

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

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

在这方面可以做些什么?

更新:

谢谢大家的回答。

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

我了解 Django 和 Rails 的设计考虑了安全方面,最常见的形式攻击,如 XSS、注入等。 (Django bookSecurity 上有一个频道)

我期待来自安全专家的 cmets。如果你是安全大师,你会推荐一个可能会流行的重要网站,建立在 DJango 上吗? 还是 Rails?

【问题讨论】:

  • 我认为这个问题将是一个很好的候选人,可以转移到未来的服务器故障站点。
  • 什么是“未来的服务器故障站点”?
  • 我无法与 Django 交谈,因为我没有这方面的经验。但我会为这样的网站推荐 Rails。您绝对可以建立一个可以处理大量流量的安全网站。

标签: ruby-on-rails django security open-source web-frameworks


【解决方案1】:

很多人说security through obscurity无效。可以引用 Microsoft 产品、Adobe Reader 等作为证据,证明封闭源代码在防止安全问题方面并不比开源更有效。

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

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

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

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

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

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

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

      【讨论】:

        【解决方案4】:

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

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

        存在使用开源框架的大型电子商务 Web 应用程序。如果您熟悉电子商务工具,那么您一定知道 Shopify 是使用 Ruby on Rails (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,因为我从未使用过它,但我听说它一样好。

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

        【讨论】:

          猜你喜欢
          • 2013-05-22
          • 2012-02-12
          • 1970-01-01
          • 2011-07-28
          • 1970-01-01
          • 2013-06-16
          • 2016-02-29
          • 2013-01-14
          • 2011-10-14
          相关资源
          最近更新 更多