2015-05-21 227 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

相關問題