playframework owasp top 10
我正在考虑将Play用于大型项目,那么,有没有人为OWASP Top 10进行过实战测试的Play框架?您知道 Play 框架中是否存在任何安全问题?
我正在考虑将Play用于大型项目,那么,有没有人为OWASP Top 10进行过实战测试的Play框架?您知道 Play 框架中是否存在任何安全问题?
在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框架,因此您弄乱它的机会更少。
关于A3,你需要小心。Play 有两种类型的会话变量。一个是哪个是经过数字签名的,另一个是哪个没有签名。此外,它们都存储在cookie客户端,如果您决定将敏感数据存储在那里,这可能会引起隐私问题。session()
flash()
同样,当涉及到A7(密码学)时,请注意,Play提供了一个方便的库,但其加密使用ECB模式,这再次打开了一组全新的潜在问题。Crypto