coldfusion - 无法通过 ColdFusion 在浏览器中禁用 HttpOnly 标志
问题描述
在我们的应用程序中,我们使用 J2EE 会话变量进行会话管理。我们最近从 ColdFusion 9 迁移到 ColdFusion 2018。迁移后,注销功能无法正常工作。我们发现,在 ColdFusion 2018 中,cookie JSESSIONID 没有从浏览器中清除,因为浏览器中的 HttpOnly 标志已设置为 true。
我们尝试通过以下方式在浏览器中禁用此 HttpOnly 标志,
By disabling HttpOnly flag and Global Script Protection in CF admin.
By modifying the jvm.config via CF admin by adding "-Dcoldfusion.sessioncookie.httponly=false".
但是这样 HttpOnly 标志仍然在浏览器中显示为启用。因此,客户端脚本无法清除 cookie JSESSIONID,因此注销功能不起作用。
在 CF2018 中,有什么方法可以在浏览器中为 cookie JSESSIONID 禁用 HttpOnly 标志?
笔记:
在 CF9 中,在浏览器中为 cookie JSESSIONID 禁用了 HttpOnly 标志。我们使用的是CF2018企业版(试用版,尚未过期)。更新 CF admin 中的设置后重新启动 CF 服务。
解决方案
您可能必须重构您的应用程序以解决 CF 9 开箱即用无法处理的许多 OWASP 漏洞。根据您的受众,您应该让第三方对您的代码库执行安全渗透测试。
您将需要重构您的注销过程。您不应该禁用cookie,它httpOnly
可以jsessionid
防止跨站点脚本攻击。
https://www.owasp.org/index.php/HttpOnly
根据 Microsoft Developer Network,HttpOnly 是 Set-Cookie HTTP 响应标头中包含的附加标志。在生成 cookie 时使用 HttpOnly 标志有助于降低客户端脚本访问受保护 cookie 的风险(如果浏览器支持它)。
https://docs.microsoft.com/en-us/previous-versions//ms533046(v=vs.85)?redirectedfrom=MSDN
使用 JEE 会话 ID 时,您需要将其添加到注销过程的一部分:
<cfset getPageContext().getSession().invalidate()>
然后重定向到另一个页面,例如您的登录屏幕。这将删除jsessionid
cookie 并实际上使服务器上的 JEE 会话无效。
推荐阅读
- python - 如何使用 pypfopt 绘图绘制有效边界
- python - 切片numpy数组的不同部分
- javascript - Vue App:v-html 指令中的内容发生了奇怪的变化
- python - Pymongo 正在获取数据库连接,但没有执行任何 CRUD 操作并抛出错误的身份验证错误
- sql - 在 Azure SQL 数据库中使用“INSERT INTO”SQL 查询时出错
- r - 需要用 R 中的新列转置特定数量的数据行
- python - 如何管理 tkinter Treeview 中列的大小?
- vue.js - vue 的 kendo-dropdownlist,如何设置默认值
- mysql - UPDATE 表 Replace() 子字符串返回行但 0 已更改
- google-chrome - https://clients2.google.com/service/update2/crx 不再工作了吗?