2015-10-18 84 views
0

我讀了關於stackoverflow的會話和安全問題,以及其他內容。我想我知道答案,但我想用一個簡單的問題來證實它 - 安全性太重要了。

猜想:我的黑帽子網站訪問者不能直接訪問他的$ _SESSION內容。

就是我的服務器執行

$_SESSION['myuserprivilege']='user' ; 

我可以假設,即使是最聰明的入侵者無法以某種方式發現即使是我的代碼這樣做,詢問一下我的PHP程序中設置了服務器$ _SESSION後(密鑰和內容)或(更糟糕的)工程師$_SESSION['myuserprivilege'] = 'admin'。只有我自己的服務器PHP代碼可以這樣做。

我仍然必須擔心黑客可以竊取不同管理員用戶的cookie(=> https和會話輪換)。但這是一個不同的問題。

是否正確?

回答

1

會話的值存儲在您的服務器中,而不是存儲在用戶機器中。所以,不...沒有人可以在沒有訪問您的服務器或代碼中的任何安全問題的情況下查看或設置該值。這就像金錢在一個安全的地方,只有有權限的人才能得到它,或者如果安全措施不夠安全。

關於cookie竊取,這稱爲會話劫持。這是常用的技術,用於從另一個用戶那裏竊取會話。您可以獲得更多信息here

基本上,如果一個人獲得了登錄管理員的會話的id,並且該應用程序沒有任何方法來避免這種情況,則此人可以訪問該用戶的權限。

任何人都可以在你的網站上設置一個cookie,但會話有一件事叫做「PHP會話ID」,所以爲了從會話中獲得一些價值,這個人需要知道一個有效的會話ID,應用。

會話路由不是問題,從任何具有此權限的人獲得某個會話的機會確實非常困難。你也可以在會話中使用更多的字符來使它更難,但是不認爲這是必要的。

最終回答:沒有人不能在我們的網站上設置會話,只有誰有權訪問代碼並且您的服務器可以執行此操作。

+0

鑑於我如何解釋我的最終問題,我認爲答案從*開始,你是正確的*然後。你可以請添加它在頂部,所以我可以標記它的答案? –

+0

我在底部添加了最終答案,好嗎? –