2015-05-21 177 views
0

我看了很多文章,发现会议不能没有cookie的工作,但试过,找到一种方式,请提供反馈意见呢?PHP会话可以在没有Cookie的情况下工作吗?

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

第2步)创建一个页面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); 

步骤3)创建另一个页面two.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); 

我发现two.php数据page.so我们可以设置会话,并获取数据,而不饼干。 任何反馈我错了,或者这真的是一个解决方案?

+0

IP的可以伪造。如果他们有动态IP,调制解调器重置可能会失去他们的会话。多个用户可能位于同一个IP上,例如在办公楼或大学校园。 – Squeegy

+0

不幸的是,这并未考虑来自同一IP地址的多个用户,例如那些使用同一家庭路由器的用户,或者同一台机器上的不同用户等。如果将会话ID追加到(例如'two.php?sessionid = sdfgsdfgasdfsdgsdfgsdfgsdfg') –

+0

,但它可以像数字签名一样工作,使用MD5或任何加密算法都是安全的。我知道这不适用于像办公室那样使用相同IP地址的网络,否则MD5无法读取或我们在字符串中追加任何内容。 – bhuvnesh

回答

0

只要用户代理和远程地址相同,就会工作。但是你可以劫持到,如果你知道

访客这个数据提交给他访问的每个网站的会话

  • 别人的公网IP
  • 某人的用户代理,并不能阻止!劫持是一项非常简单的任务,如果访问者之前曾访问过一个不好的网站,那么该网站会保存数据。

    这不是一个真正的安全解决方案!不要使用它!

    编辑:好吧,你必须欺骗的IP地址有点复杂:-)但在公共网络中,问题依然存在,甚至可能会发生冲突。

+0

但我们有一个独特的密钥,劫持是问题,但会话劫持也是可能的。 – bhuvnesh

+0

是的,但风险较高。你只需要欺骗IP地址(不是那么容易,但可能)和用户代理。没有随机ID - >不安全! – Richard

相关问题