我正在構建一個ASP.NET MVC 2網站,我目前正在實施一個OpenID註冊表單。不幸的是,我正在預測我的架構中可能存在的安全漏洞/漏洞。在視圖和控制器之間傳遞ViewModel中的信息ASP.NET MVC 2網站,而不允許修改信息
以下是我想OpenID登錄工作:
- 用戶請求/帳號/登錄,控制器發回OpenIDLogin查看。
- 用戶將OpenID輸入到View中,然後進行OpenID授權,最後將OpenID返回給Controller。
- 控制器檢查OpenID當前是否被系統中的用戶使用。如果是,用戶登錄到該帳戶。否則,註冊過程開始。
而現在,OpenID的註冊過程:
- 的OpenID標識符,以及由OpenID提供商提供的任何其他信息(如電子郵件地址或名稱),投入我的自定義視圖模型併發送到我的OpenIDRegistrationForm視圖。
- RegistrationForm視圖將OpenID存儲在隱藏字段中以確保將其發送回控制器。
- 用戶填寫RegistrationForm視圖並將其發送回控制器。
- 控制器創建用戶帳戶並將OpenID放入數據庫。
我在我的架構中看到的錯誤是,用戶可以修改RegistrationForm視圖中的隱藏值。因此,他們可以用欺騙他們的OpenID!
我將確保向最終註冊控制器操作添加另一輪檢查,以確保所提供的OpenID不存在,但仍存在欺騙的可能性。
我的架構可以改進莫名其妙嗎?我不希望這個結果嚴重...
我正在考慮的一個解決方案是在將它發送到View之前對OpenID進行加密,然後在它到達控制器時將其解密。我應該試試這個嗎?
感謝您的幫助提前。
我想我只是要加密它。我應該使用什麼加密?你有什麼樣的代碼嗎? – 2010-07-22 20:44:12
只是搜索stackoverflow。有很多加密技術......從非常簡單(但可以破解)到非常複雜。 http://stackoverflow.com/questions/2246319/c-simple-encryption – cRichter 2010-07-23 09:14:47