2013-10-07 29 views
0

目前,我的網站在用戶輸入數據庫和IP地址後存儲會話ID,然後將其存儲在cookie中。如果會話ID和IP地址在每個頁面上匹配,那麼我們授予他們訪問權限。 這似乎很好,但我們希望允許用戶在多個IP地址/多個會話中登錄到網站。ASP.Net MVC4登錄會話有什麼好的做法?

所以我只是想知道最好和最安全的方式是什麼?我們是否只在會話中存儲了用戶名和密碼,我們是否在會話中存儲了用戶名和散列密碼,或者我們是否將唯一ID存儲在數據庫的新「Sessions」表中,並在其旁邊有用戶ID?那麼我們只是將會話ID存儲在Cookie中?

我不確定會話篡改是否是一件事情,但我通常認爲精英可能會這樣做,所以我儘量保證儘可能安全。我知道編輯Cookies也很簡單。

該網站在後臺使用Web服務。當用戶輸入他們的登錄信息時,他們會被髮送到服務中,然後檢查哪些信息會返回yay或nay。 原因是服務被不同平臺的多個應用程序使用。所以基本/簡單會員模式在這裏不會真正起作用。

+0

請不要在任何會話中存儲密碼。另外你的密碼應該已經在數據庫中散列了。 –

+0

他們是。所有密碼都被哈希和鹽漬。就像我說的,我有點擔心安全。這就是爲什麼我懷疑任何想法,我可以提出。我在網上找到的是使用ASP.Net的SimpleMembership的人,這對我來說不是一種選擇,因爲它使用在後臺運行的服務進行身份驗證。 – Largoh

+0

@Largoh - 嗯? SimpleMembership不會驗證在後臺運行的服務,除非您使用可選的OpenId集成。 –

回答

1

我設法通過以下指南這裏這樣完成的:http://www.codeproject.com/Articles/13032/Custom-MembershipProvider-and-RoleProvider-Impleme 這裏: http://logcorner.wordpress.com/2013/08/28/how-to-configure-custom-membership-provider-using-asp-net-mvc4-with-external-login-like-facebook-yahoo-google-or-other-relying-party-accounts-2/

我設法得到它與我們的服務通過覆蓋從客戶會員所需的方法,使他們的工作與我們的服務檢查並做出相應迴應。它效果很好。

public override bool ValidateUser(string username, string password) 
    { 
     MyUser newUser = new MyUser 
     { 
      EMail = username, 
      Password = password 
     }; 

     try 
     { 
      MyUser user = MyService.Authenticate(newUser); 
      if (user.EMail != null && user.IsActivated) 
      { 
       return true; 
      } 
      else 
      { 
       return false; 
      } 
     } 
     catch (Exception e) 
     { 
      return false; 
     } 

    } 

它也給使用MembershipCreateStatus用於註冊新用戶的能力。這讓我真正地指出了爲什麼某些事情會失敗的小細節,而不是像以前那樣拋出一個錯誤。 謝謝你指着我在正確的方向Mystere人。

0

如果會話ID和IP地址匹配在每個頁面上,然後我們授予 他們的訪問權限。

你認爲那是IP addresses are far from secure。此外,他們可能在一次會議中合法地變更。

這聽起來像你已經推出了自己的安全,如果你在這方面有很好的經驗可以很好。

我建議你看看MVC框出來的安全性,例如看看oauth。它應該有你需要的。

+0

事實上,使用移動設備時,IP地址可以隨機更改,而會話仍在使用中。 –

+0

這就是爲什麼我想擺脫這種方法。這對用戶來說很煩人。 – Largoh

+0

@Largoh - 如果你真的像你說的那樣是一個「安全怪胎」,你應該明白,滾動自己的安全幾乎總是一個壞主意,除非你有很多的經驗,並知道你可以陷入的所有陷阱,甚至那麼專家經常會犯錯誤,這就是爲什麼最安全的代碼是很多人看到的代碼。很有可能,任何你想出來的東西都會複製已經由更成熟的代碼庫完成的東西,或者不會很安全。不管你認爲自己多麼懂得更好。 –