playframework owasp 前 10 名
Posted
技术标签:
【中文标题】playframework owasp 前 10 名【英文标题】:playframework owasp top 10 【发布时间】:2011-09-16 23:53:18 【问题描述】:我正在考虑将Play 用于大型项目,那么,有没有人为 OWASP Top 10 提供实战测试的 Play 框架?你知道 Play 框架有什么安全问题吗?
【问题讨论】:
【参考方案1】:关于 OWASP 前 10 名和 Play(一些信息 here):
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 框架,因此您很少有机会搞砸它。
【讨论】:
关于 A1:JPA 仅用于 Java。 Anorm 是否也在使用PreparedStatement
来防止 SQL 注入?
我在无状态框架方面没有任何经验,因此问题是:Play!处理通常用会话完成的事情?
好的,我想答案是:zef.me/883/the-share-nothing-architecture
@Rekin 是的,那和 memcached 以及您在 cookie 中存储最少的用户信息以识别他们是否已登录以及他们是谁。
@Jonas PreparedStatement 也可以。几乎所有没有将输入连接到 SQL 字符串的东西 :) 我只是假设 JPA 是默认值。【参考方案2】:
关于A3,你需要小心。 Play 有两种类型的会话变量。一个是session()
,经过数字签名,另一个是flash()
,没有签名。此外,两者都存储在 cookie 客户端中,如果您决定在其中存储敏感数据,可能会引发隐私问题。
同样对于 A7(加密),请注意 Play 提供了一个方便的 Crypto
库,但它的加密使用 ECB 模式,这又会打开一个 whole new group of potential issues。
【讨论】:
以上是关于playframework owasp 前 10 名的主要内容,如果未能解决你的问题,请参考以下文章