以这种方式启动session_start更安全吗?

时间:2011-07-14 19:08:57

标签: php session

我的一位朋友以这种方式开始他的会议。

<?php
session_start();
session_regenerate_id();
session_destroy();
unset($_SESSION);
session_start();
?>

对于会话劫持等是否有任何安全优势。

只是想知道为什么与通常的session_start();

相反

3 个答案:

答案 0 :(得分:5)

你需要的只是

session_start()
session_regenerate_id()

这将启动会话并在每个请求上更改其ID。但是,这不会阻止会话劫持。如果攻击者可以获取用户的会话cookie并在用户可以之前将请求发送回服务器,那么攻击者将获得一个全新的会话ID,并且用户将留下无效的会话令牌并有效地注销。

答案 1 :(得分:2)

如果在给定站点的每个页面的顶部找到此代码,则不会在回发和不同页面之间维护会话。如果你想将SESSION作为服务器端存储用于你不会在邮件后面或多个页面上使用的数据,那么我认为它可能是可行的,但这会产生一个非常奇怪且极有可能很糟糕的应用程序。

您的朋友可能尝试做的事情是删除之前的任何SESSION信息,然后开始新的信息。也许他正在检查一些量词,如果它正确评估然后将其包含在PHP页面中?无论如何,调用Rocket的功能会更好。

答案 2 :(得分:0)

此代码删除会话,然后在每次运行时创建一个新的空白。

session_destroy();
unset($_SESSION);

这会删除会话中的所有数据,然后session_start会让您成为全新的数据。

您可以第一次运行此操作来创建新会话,但如果您希望在其他页面加载的会话中拥有数据,则只需session_start