2012-03-12 94 views
1

上午認證邏輯的故障是否會有人能夠告訴我,如果我在這裏失去了一些東西,因爲它似乎有點太好,不真實。我使用類似的方式驗證用戶;安全認證與ASP.net

 if (validateUser(form.Email, form.Password)) 
     { 
      return signIn(form.Email); 
     } 

validateUser函數返回一個布爾值。登錄然後做這樣的事情;

public void signIn(string email) 
    { 
     FormsAuthentication.SetAuthCookie(nameOfUser, false); 
    } 

隨後又將讓我對未來所有的請求做這樣的事情;

string userEmail = User.Identity.Name; 
Profile p = Profile.getProfileFor(userEmail); 

這似乎有點太簡單,不安全!有什麼我在這裏失蹤/任何盲目明顯的安全風險?或者這基本上是如何完成的?

問候,

邁克

+0

是什麼讓你認爲這是不是安全? – 2012-03-12 10:12:07

回答

2

有這麼多你可以用安全辦:

  • 加密密碼
  • 日誌每次登錄嘗試使用IP地址來識別攻擊
  • 使用整數標識列,而不是電子郵件:

    這將使應用程序更精簡和更快。

    如果您使用數字而不是電子郵件,黑客會更難將信息(用戶)與黑客聯繫起來。用戶只需通過電子郵件就可以學到很多東西

  • 緩存身份
  • 使用角色
1

也就是說它是如何做的,正確的。

唯一需要注意的安全風險與所有表單帖子相同,因爲最終用戶輸入到瀏覽器中的所有值均以純文本形式(包括密碼)發送回服務器。因此,這暴露了某人嘗試嗅探密碼流量的可能性,您可以使用https來解決該問題。

2

理論上你應該使用HTTPS來避免中間人攻擊,但這不是代碼中的事情。此外,如果您按照應該的方式對密碼進行哈希處理,則不會從您的代碼中明顯看出。

順便說一下.NET的約定是使用PascalCase來獲取方法名稱。