2016-05-26 21 views
2

在我的ASP.Net MVC應用程序中,我希望允許特定用戶組訪問他們可以下載文件的頁面。通常我會要求這個用戶組通過登錄(用戶名和密碼)訪問帶有下載的頁面並驗證他們的登錄憑證。但是,這個用戶組抱怨他們對其他幾個網絡系統的登錄信息量很大,並且並不想記住另外一組登錄信息。因此,我正在考慮向用戶傳遞一個包含GUID的URL,希望這意味着任何人都不太可能猜測。例如:在Querystring中使用GUID以實現安全性

http://www.example.com/admin/93017B0C-D548-40CA-A7B0-D4DA707ABE4C

我真的體會到了什麼人認爲這種做法嗎?它會被視爲安全嗎?或者,我應該使用我的常規方法來驗證用戶登錄詳細信息,然後將它們重定向到下載的安全頁面。

在此先感謝。

回答

2

請參閱this answerGUID RFC瞭解有關GUID本身安全性的信息。

不要以爲UUID很難猜測;例如,他們不應該被用作安全能力(僅僅擁有授權
訪問權的標識符)的
。一個可預測的隨機數字來源將加劇這種情況。

也就是說,GUID是唯一的,但它們不是不可預測的,使它們不適合這種用途。改爲使用CSPRNG生成128位隨機令牌。

關於URL的安全性,是否認爲這些URL不安全。原因是默認情況下,它們由代理和服務器記錄,保存在瀏覽器歷史記錄日誌中,並可能被引用HTTP頭部泄露。

此外,建議https確保路徑在傳輸過程中不被攔截。

想象一下,用戶已從組中刪除,但您使用此方案而不是正確的身份驗證。他們的瀏覽器自動完成功能會記住URL中的GUID,這意味着他們可以在將來任何時候訪問該頁面(或者甚至可以通過書籤來確保這一點)。

我的建議是使用真實身份驗證,並鼓勵用戶使用密碼管理器。