簡體   English   中英

asp.net中的基本表單身份驗證有多安全?

[英]How secure is basic forms authentication in asp.net?

想象一下,你有一個只有2個頁面的簡單網站:login.aspx和secret.aspx。 除了ASP.net表單身份驗證和login.aspx上的ASP.net登錄服務器控件之外,您的站點都是安全的。 詳情如下所示:

  • 該站點配置為使用SqlMembershipProvider
  • 該網站拒絕所有匿名用戶
  • Cookie被禁用

顯然有很多事情需要考慮安全性,但我對.net框架附帶的零代碼開箱體驗更感興趣。

如果為了這個問題,唯一的攻擊點是login.aspx中的用戶名/密碼文本框,黑客是否可以注入允許他們訪問我們的secret.aspx頁面的代碼?

Microsoft提供的零代碼開箱即用體驗有多安全?

您仍然有一些未考慮的變量:

  • 對成員資格提供程序使用的數據存儲的安全性(在本例中為Sql Server數據庫)。
  • 托管在同一IIS中的其他站點的安全性
  • 托管站點所涉及的機器的一般網絡安全性,或托管站點的同一網絡
  • 托管站點的計算機的物理安全性
  • 您是否使用適當的措施來加密身份驗證流量? (HTTPS / SSL)

並非所有這些問題都是MS特定的,但它們值得一提,因為如果不加以處理,它們中的任何一個都很容易超過您所詢問的問題。 但是,出於你的問題的目的,我會假設它們沒有任何問題。

在那種情況下,我非常確定表單身份驗證能夠完成它應該做的事情。 我不認為那里有任何當前活躍的漏洞利用。

據我所知,密碼將以純文本形式發送(但已編碼)。 因此,最重要的是在登錄屏幕上使用HTTPS協議。

另一個設置對我來說似乎是安全的。

使用HTTP基本身份驗證(.NET基本表單身份驗證正在使用),為了查看secret.aspx頁面,瀏覽器必須發送用戶名和密碼的Base64編碼串聯。

除非您使用SSL,否則任何有權在服務器和瀏覽器之間掃描網絡的人都可以閱讀此信息。 他們可以解碼用戶名和密碼。 他們將來可以重播用戶名和密碼以訪問secret.aspx頁面。

也就是說,除非您使用SSL,否則有人也可以使用secret.aspx掃描其他人的整個會話,因此實際上,他們也可以訪問該頁面的內容。

好吧,試着看看幕后:

密碼保護

在數據庫中存儲用戶名,密碼和其他身份驗證信息的應用程序絕不應以明文形式存儲密碼,以免數據庫被盜或被盜用。 為此,SqlMembershipProvider支持三種密碼和密碼答案的存儲格式(“編碼”)。 提供程序的PasswordFormat屬性(從passwordFormat配置屬性初始化)確定使用的格式:

  • MembershipPasswordFormat.Clear,以明文形式存儲密碼和密碼答案。
  • MembershipPasswordFormat.Hashed(默認值),用於存儲從密碼和密碼答案生成的鹽漬哈希值。 salt是由.NET Framework的RNGCryptoServiceProvider類生成的隨機128位值。 每個密碼/密碼答案對都使用此唯一值進行加鹽,並且salt存儲在aspnet_Membership表的PasswordSalt字段中。 散列密碼和鹽的結果存儲在密碼字段中。 類似地,散列密碼答案和鹽的結果存儲在PasswordAnswer字段中。
  • MembershipPasswordFormat.Encrypted,存儲加密的密碼和密碼答案。 SqlMembershipProvider使用配置部分的decryptionKey屬性中指定的對稱加密/解密密鑰以及配置部分的解密屬性中指定的加密算法來加密密碼和密碼答案。 如果要求加密密碼和密碼答案,並且decryptionKey設置為Autogenerate,則SqlMembershipProvider會引發異常。 這可以防止包含加密密碼和密碼答案的成員資格數據庫在移動到其他服務器或其他應用程序時變為無效。

因此,您的安全性(開箱即用)將取決於您使用的密碼保護格式策略:

  • 如果您使用明文,則很容易入侵您的系統。
  • 另一方面,使用Encrypted,安全性取決於對計算機的物理訪問(或至少是machine.config)。
  • 使用哈希密碼(默認值)將保證安全性,具體取決於:a)RNGCryptoServiceProvider類的哈希策略的已知反轉和b)訪問數據庫以危害隨機生成的鹽。

我不知道是否可以使用某種彩虹表黑客進入默認的Hash-base系統。

有關更多詳細信息,請查看此鏈接: http//msdn.microsoft.com/en-us/library/aa478949.aspx

如果通過成員資格提供程序正確配置,您將具有足夠的安全級別。 除此之外,可以通過規范攻擊訪問該頁面,但這與您的一般安全性有關。 我介紹了如何使用安全企業應用程序塊 您可能希望閱讀這些內容並在實現站點安全性時進行調查,並了解常見的安全威脅。 鑒於您處於開放式共享網絡中,並且完全安全將是由軍方全天候安全保護的安全防護服務器(基於Orange書籍的國防部“A”級安全性),任何站點都不會100%不可攻擊)。 但是,成員資格提供程序的開箱即用功能(如果配置正確)將提供大量安全性。

編輯:是的,我同意其他評論,至少登錄屏幕上的HTTPS是給定的,如果你想保護數據包嗅探器和網絡監視器的用戶名/密碼。

正如這篇博客文章所示 ,Asp.Net支持無cookie會話。 它使用URL中的標識符來跟蹤用戶,而不是會話cookie。

我不確定這是多么安全,但我認為這對於強制身份字符串的難度是安全的。

看起來它或多或少開箱即用,但是當重定向用戶並希望維護會話狀態時,您必須包含會話ID。 博客文章展示了如何做到這一點,以及網上的許多其他文章。

URL上的Cookie不夠安全,它有很多不同的問題(特別是如果你有任何引用漏洞)和HTTPS的使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM