Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP会话可以在没有cookie的情况下工作吗?_Php_Session_Cookies - Fatal编程技术网

PHP会话可以在没有cookie的情况下工作吗?

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"].

我读了很多文章,发现没有cookie会话无法工作,但尝试并找到了一种方法,请就此提供反馈

步骤1)首先禁用并清除我正在使用chrome的浏览器的cookie数据

步骤2)创建包含以下代码的page one.php。 我首先检测到用户代理,ipaddress和我的密钥在第二页将其转换为MD5,以进行唯一的用户检测

$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->不安全!