2012-10-23 40 views
1

我正在用戶帳號首次構建網站。我正在使用戶登錄安全的過程中。在註冊時,我在保存密碼之前對密碼進行哈希處理,然後在登錄時如果密碼正確,我使用setCookie將用戶信息保存到cookie中。將隨機值作爲會話「密鑰」存儲在表中是否安全?

現在劫持一個賬戶就像修改cookie值一樣簡單。我想讓網站安全,但我正在閱讀的大多數選項似乎太複雜了,我想用自己能做的事情。我已經閱讀了一些教程,並對如何做到這一點有一個基本的想法,但不知道它有多安全。

我的想法是做一個表,會話和存儲用戶ID +隨機值,保存一個cookie既和檢查每一個頁面加載對陣表兩個值和更新他們,如果他們是正確的。這似乎很簡單,即使用戶從不同的地方登錄,但仍然可以工作,但我不知道它有多安全。 Cookie將可見,但我沒有看到任何劫持會話的方式,除非有人偷走了cookie並在更新之前使用它。

這種產品是否安全?我可以使用其他什麼簡單的方法?

+0

如果有人偷了_that訪問kind_給你數據庫然後你擰任何一種方式。只需將cookie存儲在數據庫中,並確保數據庫安全。 – noel

+0

@pst,真的嗎?它似乎違反了「一次使用的數字*」的定義。 –

+0

@ElYobo我最初把「續約他們,如果他們是正確的」爲價值的再生。 – 2012-10-23 04:13:38

回答

2

爲什麼不存儲在會話變量中的用戶名?客戶端存儲一個隨機ID並將其呈現給服務器。服務器然後將其與用戶名(服務器本地)相匹配。 只有服務器可以看到用戶名。它也很容易編寫和PHP創建隨機ID並且給它的客戶給你。此外,如果用戶更改ID到別的東西,有他們的機會很少絆腳石時存在,是通過登錄其他用戶正在使用另一個ID。

session_start(); 

//setting the username after they log in 
$_SESSION['username'] = $username; 

//retrieving the username 
//this will work from any file as long as they are on the same server for the same domain 
$username = $_SESSION['username']; 
+0

我一直在使用它,直到最近。我不知道它是安全的。問題是,很難使其與使用相同的源,這在我以前的網站的情況下,許多領域的工作,所以我切換到setcookie()函數。這真的很安全嗎?如果有人複製cookie,會發生什麼情況? – lisovaccaro

+0

我的意思是隨機ID很容易訪問?無論如何,我不想讓它變得相當安全。除非出現其他情況,否則我可能會選擇這個。 – lisovaccaro

+0

@ Liso22是的,這是非常安全的。我想強調只有服務器知道用戶名。客戶端有一個隨機ID,當提交給服務器時,服務器將其與用戶名相匹配。另外,是的,隨機ID很容易被訪問。真的沒有辦法阻止某人複製ID並使用它。您需要一種跟蹤用戶的方式,並且當您向客戶提供任何信息時,您應該完全期望用戶查看它。也許你一次只能允許一個IP地址使用一個cookie。 –

相關問題