我有一个在 Tomcat 7 服务器上运行的 Web 应用程序。默认情况下,带有 session ID 的 cookie 具有标志 HttpOnly
和 Secure
.我想为 JSESSIONID
禁用此标志曲奇饼。但它不会工作。我已经在我的 web.xml
中更改了它文件,但它不起作用。
<session-config>
<session-timeout>20160</session-timeout>
<cookie-config>
<http-only>false</http-only>
<secure>false</secure>
</cookie-config>
</session-config>
我知道这是一个安全风险,因为如果攻击者发现了 xss 漏洞,他就能够窃取 cookie 并劫持 session 。
JSESSIONID
cookie 应该使用 HTTP 和 HTTPS 以及 AJAX 请求发送。
编辑:
我已成功禁用
HttpOnly
通过将以下选项添加到
conf/context.xml
来标记文件:
<Context useHttpOnly="false">
....
</Context>
请您参考如下方法:
我没有在 Tomcat 中找到解决方案,但如果您使用 apache 作为反向代理,您可以执行以下操作:
Header edit* Set-Cookie "(JSESSIONID=.*)(; Secure)" "$1"
与
mod_headers
这将在返回途中删除标题以删除安全标志。不漂亮,但如果这很重要的话就可以工作。