是php保密的会话变量

时间:2013-08-16 11:50:38

标签: php session

假设我在哪里使用$_GET['query']存储网址查询并最终转换为会话变量$_SESSION['var']并将其发布在网页上如果我有不同的查询,则不同的人会看到相同或不同的查询?此外,如果同一个人使用不同的查询,他会说相同或不同的一个吗?

3 个答案:

答案 0 :(得分:0)

会话特定于个人用户。使用session_start()启动会话时,会创建随机ID并将其存储在用户浏览器的cookie中。在后续请求中收到此cookie时,在调用session_start()时会恢复该会话。您在$_SESSION中保存的内容将保存在该会话中,该唯一ID对于拥有该Cookie的用户而言是唯一的。

希望能够解决它。

答案 1 :(得分:0)

会话比使用cookie更安全。但是仍然可以窃取一个会话,因此黑客可以完全访问该会话中的任何内容。一些避免这种情况的方法是IP检查(它工作得很好,但是非常低,因此它本身不可靠),并且使用随机数。通常使用nonce,您有一个每页“令牌”,以便每个页面检查最后一页的nonce是否与它存储的内容相匹配。

如果你想深入潜水。去 here

答案 2 :(得分:0)

您在$_SESSION中存储的任何内容都特定于该会话,任何用户都无法直接访问$_SESSION中的任何内容,只有在您可以访问它时才能访问它,例如使用echo }。 ,会话由会话标识符(也称为 sid )标识,该标识符在服务器和用户之间来回传递(通常在cookie中,有时在URL中的查询字符串中。)

会话劫持发生在发起会话的人以外的其他人获得sid并且然后能够使用同一会话发出请求时。在这种情况下,他们可以访问合法用户可以访问的任何内容。所以在这种情况下,它们不是保密的。有很多方法可以防止会话劫持,最好是使用安全连接(HTTPS)。但这是一个不同的问题。

一个人看到的内容取决于你如何呈现它。向我们展示一些示例代码将有助于澄清事情。例如,如果你这样做:

<?php
session_start();
if(isset($_SESSION["query"])) {
    echo $_SESSION["query"];
}
$_SESSION["query"] = $_GET["query"];
?>

然后,用户将始终看到他们使用 last 请求发送的查询。

老实说,听起来你对查询是什么以及会话是什么感到困惑。如果您可以澄清您正在尝试做什么,特别是如果您可以提供一些示例代码,我们可以为您提供更多帮助。