2013-08-04 34 views
-1

有人能解釋一下會話固定是如何工作的嗎?在我的本地服務器我上傳的文件與此代碼:如何做會話固定?

<?php 
session_start(); 
if (!isset($_SESSION['count'])) $_SESSION['count'] = 0; 
else ++$_SESSION['count']; 
echo $_SESSION['count']; 
?> 

我在瀏覽器的地址設置:http://localhost/sessiontest.php?PHPSESSID=1234 它將開始只是0 writen,經過幾次按下刷新按鈕,它會去1,2,3 ,4,...在書籍和我之前閱讀過的互聯網話題中,有記載說如果我在不同的瀏覽器或不同的瀏覽器中使用這個地址,它會顯示第一個瀏覽器以mz結尾的數字。但是,當我將這個地址輸入到第二臺PC時,它是從0開始的。

它是否以某種方式保護在更高版本的Apache和PHP中,還是我完全誤解了這個主題?感謝幫助!

+0

您是指Robin Nixon編寫的__Learning PHP,MySQL,JavaScript和CSS__書嗎? – jreut

+0

@jreut是,第二版,但我在這裏找到了幾乎相同的示例:http://shiflett.org/articles/session-fixation –

回答

2

我想你可能誤解了。 PHP使用PHPSESSID來存儲會話的ID。通常這個值存儲在一個cookie中,但是如果cookie被禁用,它也可以存儲在url中。

如果您在一個瀏覽器上讀取url(或cookie)的值,則可以在另一個瀏覽器的url中使用該值來有效接管該會話。這是因爲PHP沒有跟蹤任何信息,只是使用該會話ID來識別會話。

我想你的情況,cookie也啓用,所以PHP使用存儲的cookie而不是URL值。您可以嘗試先刪除cookie,完全禁用cookie並使用此url,或者您可以更改cookie的值。

+0

非常感謝,現在我更瞭解我的主題!再次感謝 –