30

我正在考虑将Play用于大型项目,那么,有没有人为 OWASP Top 10 提供实战测试的 Play 框架?您知道 Play 框架中有哪些安全问题吗?

4

2 回答 2

41

在 OWASP Top 10 和 Play 上(一些信息在这里):

  • A1:注射

    默认使用 JPA 并转义字符串

  • A2:跨站脚本(XSS)

    从 1.0.1 版本开始,Play 的模板引擎自动转义字符串

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

    Play 是无状态的,不涉及会话。Cookies 受密码保护。通过散列将数据安全地存储在数据库(密码)上取决于用户,而不是框架

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

    同样,这取决于开发人员验证对允许资源的访问,而不是框架

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

    POST 请求允许使用真实性令牌来防止这种情况。当然,这取决于开发人员正确使用 GET/POST

  • A6:安全配置错误

    默认的错误报告过程在生产中似乎是安全的(没有堆栈跟踪泄漏)。唯一需要关注的是路线中的“catch all”条目,但这应该在生产模式下注释掉

  • A7:不安全的加密存储

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

  • A8:未能限制 URL 访问

    开发人员必须实施安全限制(通过@Before,就像在教程中一样)以禁止访问被禁止的页面。

  • A9:传输层保护不足

    Play 支持 SSL

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

    播放重定向是通过 302,而不是硬编码的字符串,这应该可以防止这种情况。

TL;DR:在框架可以完成所有工作的部分,Play 可以完成。在开发人员需要完成所有工作的部分中,开发人员需要完成所有工作。每个需要 50% 的零件,Play 提供其 50%。

让我们这样说吧:没有理由认为 Play 的安全性低于任何其他 Java 框架。在许多情况下,您可以认为它更安全。由于 Play 是一个易于开发的、无状态的 REST 框架,因此您很少有机会搞砸它。

于 2011-06-17T10:06:16.310 回答
5

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

同样对于 A7(加密),请注意 Play 提供了一个方便的Crypto库,但它的加密使用 ECB 模式,这再次引发了一系列全新的潜在问题

于 2014-03-18T13:35:13.260 回答