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 名的主要内容,如果未能解决你的问题,请参考以下文章

OWASP TOP 10 – 终极漏洞指南(2021)

OWASP TOP 10(OWASP十大应用安全风险)

owasp2021top10漏洞简介

web漏洞类型概述(owasp top10笔记)

OWASP Top 10 2022介绍

结合OWASP Top 10 初识安全测试