假设如果我在哪里存储 url 的查询使用$_GET['query']
并最终转换为会话变量$_SESSION['var']
并将其发布在网页上,如果我有不同的查询,不同的人会看到相同或不同的查询吗?此外,如果同一个人使用不同的查询,他会说相同还是不同的查询?
3 回答
您存储的任何内容$_SESSION
都特定于该会话,并且$_SESSION
任何用户都无法直接访问其中的任何内容,只有在您使其可访问时才能访问它,例如使用echo
. 但是,会话由会话标识符(也称为sid)标识,该标识符在服务器和用户之间来回传递(通常在 cookie 中,有时在 URL 中的查询字符串中)。
当发起会话的人以外的其他人获得了 sid 并且随后能够使用同一会话发出请求时,就会发生会话劫持。在这种情况下,他们将有权访问合法用户有权访问的任何内容。所以在这种情况下,不,它们不是机密的。有很多方法可以防止会话劫持,最好的方法是使用安全连接 (HTTPS)。但这是一个不同的问题。
一个人看到什么取决于你如何呈现它。向我们展示一些示例代码将有助于澄清事情。例如,如果你这样做:
<?php
session_start();
if(isset($_SESSION["query"])) {
echo $_SESSION["query"];
}
$_SESSION["query"] = $_GET["query"];
?>
然后用户将始终看到他们与最后一个请求一起发送的查询。
老实说,听起来您对什么是查询以及什么是会话有点困惑。如果您能阐明您正在尝试做什么,尤其是如果您可以提供一些示例代码,我们可能会为您提供更多帮助。
会话特定于个人用户。使用 启动会话时session_start()
,会创建一个随机 id,并将其存储在用户浏览器的 cookie 中。当在后续请求中收到此 cookie 时,该会话会在调用时恢复session_start()
。您保存的任何内容$_SESSION
都使用该唯一 ID 保存在该会话中,该唯一 ID 对持有该 cookie 的用户来说是唯一的。
希望清除它。
会话比 cookie 安全得多。但是仍然有可能窃取会话,因此黑客可以完全访问该会话中的任何内容。避免这种情况的一些方法是 IP 检查(效果很好,但 fi 非常低,因此本身不可靠),以及使用随机数。通常使用 nonce,您有一个每页的“令牌”,以便每个页面检查最后一页的 nonce 是否与它存储的内容匹配。
如果你想深入了解。去这里。