1

目前,我正在处理实施一切是为了防范前 10 名项目的安全风险 对于前 10
名中的第 4 名 -不安全的直接对象引用OWASP 指的是OWASP 应用程序安全验证标准

所以我正在阅读V3中的所有内容,但我现在有一些实现它的问题。
我将 JBoss-AS 7.0.1 与 Java EE6 和 JSF 2.0 一起使用

V3.4 验证会话 id 除了在 cookie 标头中之外从未披露过;特别是在 URL、错误消息或日志中。这包括验证应用程序不支持会话 cookie 的 URL 重写。

我在这里阅读了一些关于 stackoverflow 的文章,如何避免用户第一次访问该端时 jesssion 出现在 URL 中......但很多答案都像:使用 URL 重写......这意味着什么?这does not support URL rewriting of session cookies

在第一个条目上处理 jsessions 的正常方法是什么?有什么保存方法来处理它?

V3.10:验证只有应用程序框架生成的会话 id 被应用程序识别为有效。

你如何在 JSF2.0/JavaEE 中做到这一点?

V3.12:验证包含经过身份验证的会话令牌/ID 的 cookie 是否将其域和路径设置为该站点的适当限制值。

这是什么意思?当我用 Firebug 查看 cookie 时,我从 URL http://localhost:8080/projectname/
运行 webapp ,在 cookie 中我得到: Path: /projectname
这就是 OWASP 的含义have their domain and path set to an appropriately restrictive value for that site.吗?

谢谢!

4

1 回答 1

2

V3.4 验证会话 id 除了在 cookie 标头中之外从未披露过;特别是在 URL、错误消息或日志中。这包括验证应用程序不支持会话 cookie 的 URL 重写。

servlet 容器默认配置为支持通过 cookie 和 URL 进行会话跟踪。通过 URL 进行的会话跟踪也称为“URL 重写”,您可以在其中看到;jsessionid=[session id]出现在 URL 中。这将在客户端禁用 cookie 时自动触发。要禁用 URL 跟踪,您需要仅通过 cookie 明确指定跟踪模式。将此添加到 webapp 的web.xml

<session-config>
    <tracking-mode>COOKIE</tracking-mode>
</session-config>

此外,您需要确保 JSF 代码不会将会话ID打印到 HTML 输出等<h:outputText value="#{session.id}" />


V3.10:验证只有应用程序框架生成的会话 id 被应用程序识别为有效。

默认情况下,servlet 容器已经这样做了。只有 Tomcat 6.x(本质上也是 JBoss 5.x)存在安全问题,即当启用服务器范围的会话共享时,服务器将完全使用客户端在Cookie请求标头中提供的会话 ID。Tomcat 7.x(以及固有的 JBoss 6.x/7.x)将不再这样做。另请参阅Tomcat 6.x<Connector>文档以获取更多背景信息(检查emptySessionPath属性描述)。


V3.12:验证包含经过身份验证的会话令牌/ID 的 cookie 是否将其域和路径设置为该站点的适当限制值。

默认情况下,servlet 容器已经这样做了。只有当您将 servlet 容器配置为使用服务器范围的会话共享(因此,所有部署的应用程序之间共享相同的会话)时,它才违反规则。另见上一点。

请注意,这些规则中的大多数与 JSF 几乎没有关系。它们更多地与一般服务器和 webapp 配置有关。JSF 仅仅是一个基于组件的 MVC 框架。

于 2012-03-08T12:05:22.957 回答