我已经保护了 JSESSIONID 并使其成为 HttpOnly。现在问题来了,我无法从不安全的页面(http 协议)登录我的应用程序。如果 JSEESIONID 是安全的且 HttpOnly,是否有任何方法可以从安全页面(https)移动到不安全页面(http),反之亦然。
1 回答
如果 JSEESIONID 是,有没有办法从安全页面(https)移动到不安全页面(http),反之亦然
secure
不是用一个饼干。关键secure
是要阻止cookie 被明文发送到 HTTP 页面,窃听者可以窃取它并使用它来访问 HTTPS 页面。
要拥有一个破坏 HTTP cookie 也不会破坏 HTTPS cookie 的系统,您必须拥有两个具有不同名称和值的单独会话 cookie。例如:一个http_session
cookie,没有secure
它,只有网站的 HTTP 版本读取,一个https_session
cookie,secure
只有 HTTPS 版本读取。登录过程必须设置两个 cookie,并且必须修改会话系统以将两个会话 ID 绑定到同一个会话存储包。
我无法从不安全的页面登录我的应用程序
您不得允许从 HTTP 页面登录。即使表单提交是安全地发送到 HTTPS 地址,最终用户也无法判断是这种情况,因此中间人攻击者可以轻松篡改登录表单以使其在建立 HTTPS 连接之前泄露密码。HTTP 登录表单是一个典型的安全错误。
通常,在不影响安全性或可靠性的情况下,很难在站点内进行 HTTP 和 HTTPS 之间的交换。这很少值得。如果您有 HTTPS 地址,通常最好只通过该地址提供所有服务。