2010-09-05 84 views
1

我要問的問題只是因爲我很好奇。我認爲我做的是正確的事情,但我想確保它實際上是正確的。這是關於哈希。這種哈希驗證安全嗎?

我目前正在建設的網站有幾個Ajax編輯組件。首先,未登錄的用戶不能使用這些組件。其次,登錄的用戶只能以自己的名義完成他們的請求。僞造很容易,因爲我發送用戶標識。

我的驗證方法如下。每個用戶在數據庫中都有一列包含隨機信息,如8個字符的隨機字符串。除了用戶所做的每個Ajax請求外,此隨機字符串都將作爲散列字符串發送。當服務器收到Ajax請求時,該散列與用戶表匹配,以確保ID和散列是有效的對。如果是這樣,請求是有效的。

'祕密'隨機字符串永遠不會進入用戶領域,不容易被猜測,這意味着哈希永遠不會被用戶生成。這種請求是否安全?有什麼缺點嗎?如果我使用一些鹽,會更好嗎?

在一個側面說明,這種驗證真的讓我感興趣。我參加了一個交互設計課程。 '我們'有'世界知識,頭腦知識'的原則。哈希確實使用該技術將元數據從「頭」轉移到「世界」(反之亦然)。頭腦和世界都有他們對元數據進行比較和解密的方法,因此無法模擬請求。只要世界不知道頭腦知道什麼。

那麼,說,我想知道我的請求是否(相對)安全。提前致謝!

Reinder

回答

0

是受到一對夫婦的警告。

1)如果散列發送清除,它將受到欺騙。攔截哈希的攻擊者現在可以模擬有效的用戶。爲了確保安全,您需要保護通道(HTTPS)。

2)確保您使用現有的密碼安全哈希。不要試圖推出自己的。我會建議遠離MD5。鑑於這是一個新的情況,並且存在SHA1實現,所以沒有理由使用MD5。