了解 secure/httponly cookie 如何为 java 应用程序工作
Undestanding how secure/httponly cookie works for java applications
我一直有一种行为,由于我目前对此的理解水平,我只能称之为怪异。
我有 apache 版本:2.4.7 on Ubuntu 通过 AJP 1.3 代理 tomcat 7.0.52.0 运行 带有 apache shiro 1.2 的 spring 应用程序 (MVC)作为安全框架。
我已经在 apache2.conf 中设置了 headers 条目,如下所示
Header always append X-Frame-Options SAMEORIGIN
Header edit Set-Cookie ^(.*)$ ;HttpOnly;Secure
如果使用以下任一或所有方法在 tomcat 端强制执行标志,我会有完全相同的行为:
- conf/context.xml with useHttpOnly="true" 上下文标签的属性
- conf/server.xml 具有 ajp 或 http
的 secure="true" 属性
连接器WEB-INF/web.xml与以下
<cookie-config>
<http-only>true</http-only>
<secure>true</secure>
</cookie-config>
在此之后发生的事情是在 /login
处有一个安全和 httponly 标志,在身份验证成功后,所有这些标志在应用程序中消失,在对服务器的任何调用中。用户注销后,标志会返回一个额外的标志:jsessionid 和 RememberMe 上的 DeleteMe
。
此 /login 页面创建带有安全和 httponly 标志的 jsessionid
当身份验证成功时,2 步 auth jsessionid 没有标志
在帐户仪表板中也没有标记
但是在注销时标志又回来了
不过我的问题是
1:这是通常的行为吗
2:如果这是实际行为,这是否意味着 cookie 在 session id 的整个生命周期内都是安全的?
这不常见 behavior/observation,因为这些标志不适用于 Cookie
发送到服务器的请求 header保持状态。接收到的值由客户端使用,但不由客户端传输。您被显示 Cookie
header 列的诊断界面误导了。 Set-Cookie
和 Cookie
这样不对称。
判断您的 non-browser 客户端是否支持 "SECURE" 设置的唯一方法是诱使它发送一个 non-HTTPS 请求到在cookie 并观察它是否省略了之前设置为安全的 cookie。
我一直有一种行为,由于我目前对此的理解水平,我只能称之为怪异。
我有 apache 版本:2.4.7 on Ubuntu 通过 AJP 1.3 代理 tomcat 7.0.52.0 运行 带有 apache shiro 1.2 的 spring 应用程序 (MVC)作为安全框架。
我已经在 apache2.conf 中设置了 headers 条目,如下所示
Header always append X-Frame-Options SAMEORIGIN
Header edit Set-Cookie ^(.*)$ ;HttpOnly;Secure
如果使用以下任一或所有方法在 tomcat 端强制执行标志,我会有完全相同的行为:
- conf/context.xml with useHttpOnly="true" 上下文标签的属性
- conf/server.xml 具有 ajp 或 http 的 secure="true" 属性
连接器WEB-INF/web.xml与以下
<cookie-config> <http-only>true</http-only> <secure>true</secure> </cookie-config>
在此之后发生的事情是在 /login
处有一个安全和 httponly 标志,在身份验证成功后,所有这些标志在应用程序中消失,在对服务器的任何调用中。用户注销后,标志会返回一个额外的标志:jsessionid 和 RememberMe 上的 DeleteMe
。
此 /login 页面创建带有安全和 httponly 标志的 jsessionid
当身份验证成功时,2 步 auth jsessionid 没有标志
在帐户仪表板中也没有标记
但是在注销时标志又回来了
不过我的问题是
1:这是通常的行为吗
2:如果这是实际行为,这是否意味着 cookie 在 session id 的整个生命周期内都是安全的?
这不常见 behavior/observation,因为这些标志不适用于 Cookie
发送到服务器的请求 header保持状态。接收到的值由客户端使用,但不由客户端传输。您被显示 Cookie
header 列的诊断界面误导了。 Set-Cookie
和 Cookie
这样不对称。
判断您的 non-browser 客户端是否支持 "SECURE" 设置的唯一方法是诱使它发送一个 non-HTTPS 请求到在cookie 并观察它是否省略了之前设置为安全的 cookie。