Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用servlet 3.0的JBoss 6会话安全特性存在问题_Java_Security_Tomcat_Jboss6.x_Servlet 3.0 - Fatal编程技术网

Java 使用servlet 3.0的JBoss 6会话安全特性存在问题

Java 使用servlet 3.0的JBoss 6会话安全特性存在问题,java,security,tomcat,jboss6.x,servlet-3.0,Java,Security,Tomcat,Jboss6.x,Servlet 3.0,我们将应用程序从JBoss5迁移到JBoss6,其中一个主要原因是利用Servlet3.0的新特性。除了JBoss 6和servlet 3.0的一个新特性之外,一切都正常工作:将会话cookie设置为仅通过安全通道传输,即使请求是通过普通HTTP发出的。这对我们来说是一个非常重要的安全特性,通过添加 <secure>true</secure> true 在web.xml中。这是web.xml的一部分: <session-config> <sessio

我们将应用程序从JBoss5迁移到JBoss6,其中一个主要原因是利用Servlet3.0的新特性。除了JBoss 6和servlet 3.0的一个新特性之外,一切都正常工作:将会话cookie设置为仅通过安全通道传输,即使请求是通过普通HTTP发出的。这对我们来说是一个非常重要的安全特性,通过添加

<secure>true</secure>
true
在web.xml中。这是web.xml的一部分:

<session-config>
<session-timeout>25</session-timeout>
<cookie-config>
    <http-only>true</http-only>
    <secure>true</secure>
</cookie-config>
<tracking-mode>COOKIE</tracking-mode>

25
真的
真的
曲奇

当我们移除

<secure>true</secure>
true
一切正常。当它存在时,即使在安全页面(HTTPS)或不安全页面(HTTP)上,也会为每个请求生成一个新的jsessionid。此外,登录不起作用,因为在使用安全凭据登录后,用户被重定向回登录页面

我想这可能也是Tomcat7的一个问题,因为它也使用Servlet3.0规范。任何建议都将不胜感激

根据以下内容考虑

稳妥

可选。安全属性(不带值)指导用户 代理仅使用(未指定)安全方式联系来源 服务器发送回此cookie时

用户代理(可能在用户的控制下)可以确定 它认为适合“安全”的安全级别 cookies。安全属性应被视为安全属性 从服务器到用户代理的通知,指示它处于 会话对保护cookie内容的兴趣

这意味着该规范允许浏览器(用户代理)定义什么是“安全的”

web.xml
中的
Secure
元素是的参考,您可以使用浏览器的调试工具跟踪该值

如果通信不“安全”,浏览器将不会在以下请求中将收到的cookie发送到服务器

问题不在于JBoss总是返回新的cookie,而在于浏览器因为通信不安全而不返回cookie。JBoss然后为每个请求创建一个新会话

很明显,对于非加密通信(非HTTPS),浏览器不会发送cookie,这是预期的,因为您将cookie标记为
secure=true

但是,即使您使用的是HTTPS,“安全”也与浏览器的安全概念有关,例如:

  • 证书可以过期
  • 证书是自签名的
  • 您使用的主机名与签署证书的主机名不同
使用TLS可能会出现这些和其他安全问题,这意味着通信不安全

问题一定出在SSL/TLS或Cookie配置上,这意味着您必须检查所做的工作并隔离问题。我不认为JBoss或JBossWeb(Tomcat6 fork)中有任何错误导致了它,并且可以肯定这不是一个规范错误

我能够使用TLS和您的
web.xml
配置配置JBoss 6.1.0 Final,一切正常


我建议您仔细检查配置、浏览器调试和警报

恕我直言,但IMHOJBossAS6几乎和5一样有问题。小心点。只需查看状态为
已关闭且
无法修复的JIRA票据即可。为什么JBoss AS 7不行?@GrzesiekD感谢您的评论。事实上,我们现在已经迁移到了7。这个问题已经问了将近2年了。是的,你是对的。我在发表评论后注意到了这一点。我是罪过。@Alex:你找到解决办法了吗?如果是这样的话,请作为答案发布,以帮助未来的访问者。@MohammadFaisal我们没有解决这个问题,我们根本没有使用
true
功能。在发布后迁移到JBossAS7时。