开源Web框架:安全性

时间:2009-04-27 15:11:39

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

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

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

如果我正在建立一个将要进行大量电子商务的网站,那么使用它是否合适 DJango和Satchmo等框架?

安全性因为开放架构而受到损害吗?

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

在这方面可以做些什么?

更新

感谢你们的回答。

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

据我所知,Django和Rails的设计始终牢记安全方面,最常见的形式攻击如XSS,注入等。 (Django book有一个ch Security

我期待安全大师的评论。如果您是安全大师,您会建议在DJango上建立一个可能会受欢迎的重要网站吗? 还是Rails?

4 个答案:

答案 0 :(得分:5)

很多人说security through obscurity无效。微软产品,Adobe Reader等可以作为证据证明封闭源在防止安全问题上不比开源更有效。

许多开源倡导者认为更多的眼睛是更好的方法是对抗安全相关错误的一种方法。然而,实际上,当您处理较小的应用程序或不太受欢迎的商业或开源时,通常很少有眼睛。因此,有一些黑帽子搜索谷歌代码的真正危险,因为其中包含一个安全漏洞。

尽管如此,如果你使用一个相当流行的开源框架 - 我怀疑它会比竞争商业产品更安全或更不安全。至少, 可能 可以更快地转变来自具有非常活跃社区的开源产品的安全相关错误修复。

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

答案 1 :(得分:4)

有些答案只讨论开源与封闭和安全性,但由于你询问了具体的框架,我认为我会评论我对Rails的了解。

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

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

答案 2 :(得分: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,因为我从未使用它,但我听说它也一样好。

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

答案 3 :(得分:2)

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

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

关于Django的注意事项是开箱即用,所有表格输入都经过验证并通过卫生处理“标记为安全”。您可以通过其cleaned_data字典访问表单的已清理数据。

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

最后,如果任何恶意数据通过,模型会提供额外的安全层和验证。

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

相关问题