2011-06-17 63 views
30

我在考虑将Play用于大型项目,那么,是否有任何经过战斗考验的OWASP Top 10 Play框架?您在Play框架中是否存在任何安全问题?playframework owasp top 10

回答

41

在OWASP十大用(一些信息here):

  • A1:注射

    使用JPA和默认

  • A2逃逸字符串:跨站脚本( XSS)

    自版本1.0.1起,Play的模板引擎会自动转义字符串

  • A3:破坏的身份验证和会话管理

    播放是无状态的,没有涉及任何会话。 Cookie使用密码保护。通过哈希数据库(密码)上安全地存储数据依赖于用户,而不是框架

  • A4:不安全的直接对象引用

    同样,这取决于开发者验证访问资源允许的,没有那么多的框架

  • A5:跨站请求伪造(CSRF)

    POST请求允许真实性标记,以防止这一点。当然,这使用GET/POST取决于开发商正确

  • A6:安全配置错误

    默认的错误报告过程似乎对生产(不具有堆栈跟踪泄漏)的安全。唯一担心的是在路线的“一网打尽”条目,但这应该在生产模式中注释掉

  • A7:不安全的加密存储

    开发者有责任对数据库中的敏感信息进行加密

  • A8:未能限制URL访问

    开发人员必须实施安全限制(通过@Before,就像本教程中所述)来禁止访问禁止页面。

  • A9:没有足够的传输层保护

    播放支持SSL

  • A10:未经验证的重定向和转发

    播放重定向是通过302,而不是硬编码字符串,应防止这一点。

TL; DR:在框架可以完成所有工作的部分,Play做到了。在开发人员需要完成所有工作的部分,开发人员需要完成所有工作。每个游戏需要50%的部分,游戏提供50%。

让我们这样说吧:没有理由认为你应该比其他任何Java框架安全。在很多情况下,你可以认为它更安全。随着Play对开发人员,无状态和REST框架的使用变得容易,您可以减少混乱的机会。

+3

关于A1:JPA仅适用于Java。 Anorm是否使用'PreparedStatement'来防止SQL注入呢? – Jonas 2011-06-17 10:10:54

+1

我对无状态框架没有任何经验,因为这个问题:怎么玩!处理会话通常会做的事情? – Rekin 2011-06-17 10:14:25

+1

好吧,我想答案是:http://zef.me/883/the-share-nothing-architecture – Rekin 2011-06-17 10:19:01

5

关于A3,你需要小心。 Play有两种类型的会话变量。一个是session()其中数字签名,另一个是flash()这是不是签名。 都存储在Cookie 客户端,如果您决定在那里存储敏感数据,可能会引发隐私问题。

另外就A7(加密技术)而言,请注意Play提供了一个方便的Crypto库,但其加密使用ECB模式,该模式再次打开whole new group of potential issues