playframework owasp top 10

2022-09-01 11:50:30

我正在考虑将Play用于大型项目,那么,有没有人为OWASP Top 10进行过实战测试的Play框架?您知道 Play 框架中是否存在任何安全问题?


答案 1

在OWASP Top 10和Play上(此处提供一些信息):

  • A1:注射

    默认使用 JPA 并转义字符串

  • 解答 2:跨站点脚本 (XSS)

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

  • 解答 3:损坏的身份验证和会话管理

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

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

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

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

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

  • 解答 6:安全配置错误

    默认的错误报告过程在生产中似乎是安全的(没有堆栈跟踪泄漏)。唯一的问题是路由中的“全部捕获”条目,但这应该在生产模式下注释掉。

  • 解答 7:不安全的加密存储

    开发人员负责加密数据库中的敏感信息

  • 答案 8:未能限制网址访问

    开发人员必须实施安全限制(通过@Before,如教程中所示)以禁止访问禁止的页面。

  • 答案 9:传输层保护不足

    Play 支持 SSL

  • 答案 10:未经验证的重定向和转发

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

TL;DR:在框架可以完成所有工作的部分,Play做到了。在开发人员需要完成所有工作的部分中,好吧,开发人员需要完成所有工作。每个零件需要50%,Play给出50%。

让我们这样说:没有理由认为Play比任何其他Java框架都不安全。在许多情况下,您可以认为它更安全。由于Play是一个易于开发人员,无状态和REST框架,因此您弄乱它的机会更少。


答案 2

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

同样,当涉及到A7(密码学)时,请注意,Play提供了一个方便的库,但其加密使用ECB模式,这再次打开了一组全新的潜在问题Crypto