PHP会话可以在没有cookie的情况下工作吗?
我读了很多文章,发现没有cookie会话无法工作,但尝试并找到了一种方法,请就此提供反馈 步骤1)首先禁用并清除我正在使用chrome的浏览器的cookie数据 步骤2)创建包含以下代码的page one.php。 我首先检测到用户代理,ipaddress和我的密钥在第二页将其转换为MD5,以进行唯一的用户检测PHP会话可以在没有cookie的情况下工作吗?,php,session,cookies,Php,Session,Cookies,我读了很多文章,发现没有cookie会话无法工作,但尝试并找到了一种方法,请就此提供反馈 步骤1)首先禁用并清除我正在使用chrome的浏览器的cookie数据 步骤2)创建包含以下代码的page one.php。 我首先检测到用户代理,ipaddress和我的密钥在第二页将其转换为MD5,以进行唯一的用户检测 $uagent = base64_encode($_SERVER["HTTP_USER_AGENT"]); echo $ip = md5($_SERVER["REMOTE_ADDR"].
$uagent = base64_encode($_SERVER["HTTP_USER_AGENT"]);
echo $ip = md5($_SERVER["REMOTE_ADDR"]."MYSECRETKEY".$uagent);
echo "<br>";
echo session_id($ip);
session_start();
$_SESSION['data'] = array("name"=>"bbbbbbbb","designation"=>"software_engineer");
print_r($_SESSION);
$uagent=base64\u编码($\u服务器[“HTTP\u用户\u代理]);
echo$ip=md5($_SERVER[“REMOTE\u ADDR”]。“MYSECRETKEY”。$uagent);
回声“
”;
回显会话id($ip);
会话_start();
$\会话['data']=数组(“名称”=>“bbbbbbbb”,“名称”=>“软件工程师”);
打印(美元会话);
步骤3)创建另一个页面2.php
$uagent = base64_encode($_SERVER['HTTP_USER_AGENT']);
echo $ip = md5($_SERVER['REMOTE_ADDR']."MYSECRETKEY".$uagent);
echo "<br>";
echo session_id($ip);
session_start();
print_r($_SESSION);
$uagent=base64\u编码($\u服务器['HTTP\u用户\u代理]);
echo$ip=md5($_服务器['REMOTE\u ADDR'].“MYSECRETKEY”。$uagent);
回声“
”;
回显会话id($ip);
会话_start();
打印(美元会话);
我在two.php页面上找到了数据,所以我们可以设置会话并在没有cookie的情况下获取数据。
任何反馈我错了,或者这真的是一个解决方案?只要用户代理和远程地址相同,这就可以工作。但是如果你知道的话,你可以劫持一个会话
- 某人的公共知识产权
- 某人的用户代理
编辑:好的,您必须伪造IP地址,这有点复杂:-)但是在公共网络中,问题仍然存在,甚至可能发生冲突。IP可能被伪造。如果他们有一个动态IP调制解调器重置可能会失去他们的会话。多个用户可能位于同一IP上,如办公楼或大学校园。不幸的是,这不考虑来自同一IP地址的多个用户,如使用同一家用路由器的用户,或同一台机器上的不同用户等。如果将会话id附加到url,则可以使用不带cookie的会话(例如,
two.php?sessionid=sdfgsdfsdgsdfgsdfgsdfgsdfgsdfg
)但它会像数字签名一样工作。使用MD5或任何加密算法都是安全的。我知道这不会在使用相同IP的办公室这样的网络上工作,否则MD5无法读取或任何我们附加的字符串。但是我们有一个唯一的密匙,劫持是问题,但会话劫持也是可能的。是的,但风险更高。你知道吗只需欺骗IP地址(不是那么容易,但可能)和用户代理。没有随机ID->不安全!