【发布时间】:2016-11-19 20:25:25
【问题描述】:
据推测,我在 PHP Web 应用程序上的会话中没有使用 HttpOnly cookie。如果访问者在使用 PHP 会话的页面上,他们可以看到会话 cookie。除了查看之外,他们还可以删除或编辑它。
下一个案例涉及用户在我的 Web 应用程序上的一个页面(例如,普通页面)上不使用会话,并且普通页面包含指向使用会话的页面(会话页面)的链接,具有,@ 987654321@。在普通页面上,如果设置了一个与我用于会话页面的 cookie 同名的 cookie(比如使用控制台),并且点击了指向会话页面的链接,那么当我执行 session_start() 时会发生什么在会话页面上?
它是创建一个新会话,还是尝试使用从正常页面发送的 cookie 中的值映射到一个会话?
如果它映射到现有会话值,则称该会话被劫持。没有映射的情况下会发生什么?它是否会创建具有新值的会话 cookie?
即使我在会话中使用 HttpOnly,也可以确定无法在客户端使用 JS 读取或操作会话 cookie。但是在服务器上,服务器是否在客户端发送到服务器的会话 cookie 上读取相同的(HttpOnly)并使会话无效,以防它不是 HttpOnly?还是尝试将值映射到服务器上的现有会话?
希望我能说清楚。
【问题讨论】:
-
我不确定你的问题到底是什么。但是 HttpOnly 标志对服务器来说并不重要。该标志与客户相关。如果已设置,则浏览器不会让 javascript 访问 cookie。服务器不知道哪些 cookie 有 HttpOnly 标志,这无关紧要。
-
@CharlotteDunois 你不明白什么?也许,我可以澄清一下。
-
如果您设置了正确的 cookie 值,是的,您可以窃取会话。
-
如果我设置了错误的 cookie 值,它不会映射到实际会话怎么办?
session_start()是否会向会话 cookie 写入新值或尝试读取错误值的会话,这意味着设置的会话变量实际上都不存在? -
然后 PHP 将开始一个新的会话。
标签: javascript php session cookies