簡體   English   中英

C#4 ASP.net * NON MVC *自定義身份驗證

[英]C# 4 ASP.net *NON MVC* Custom Authentication

我知道這個問題已經被問過無數次了,但是相信我我已經搜索了Google幾個小時,卻一無所獲。 無論那里有什么,它都用於我不使用的MVC。

我的要求很簡單。 我不想使用asp.net中提供的默認身份驗證。 我會將用戶名/密碼/角色存儲在自定義SQL Server表中。 我將為用戶名/密碼提供2個輸入,並提供一個驗證按鈕。 驗證后,他被允許訪問管理區域。 這只會由我的子域“ admin。 * .com”中的管理員使用。 他們將每天使用此頁面向網站添加內容。

  1. 我該如何實施。 教程鏈接就足夠了。
  2. 生產安全嗎? 我不希望一些新手黑客進入我的網站並將其弄亂。 如果不安全,我還有什么選擇。

謝謝,開發人員

您可以創建自己的具有所需功能的自定義成員資格提供程序。 asp.net會員提供者

出於安全目的,最好使用久經考驗的方法。 請記住,您可以自定義任何提供程序,包括角色提供程序,甚至可以創建自己的唯一提供程序。

這是一個使用ASP.NET 1.1進行LDAP身份驗證的示例。 該邏輯可能仍然適用,也可以適用於更高版本的ASP.NET,盡管我尚未對其進行測試。

使用內置成員資格提供程序或實現自己的成員資格提供程序,不能保證黑客無法訪問您的系統。 您必須考慮的事項:

  1. 客戶端和服務器之間的數據加密
  2. 不要將密碼存儲在數據庫中,甚至不進行加密。 如果可以的話,將每個密碼散列成自己的鹽。
  3. 加強強密碼熵
  4. 確保會話和授權cookie標記為HttpOnly和Secure
  5. 對於管理員密碼,有一項政策要經常更改(例如每月一次)
  6. 提供在有人登錄其帳戶時通知管理員的方法
  7. 暫時鎖定每秒超過請求數量且無法通過身份驗證的IP地址
  8. 當用戶在y分鍾(例如10分鍾)內輸入超過x(例如10)次密碼時,暫時鎖定用戶。

這些只是少數要尋找的東西。 您還必須關注會話劫持,javascript攻擊等。

這不是一件小事。

根據我們的評論,鑒於您不願實施ASP.Net成員資格 提供程序 (並且值得花時間進行調查-您可能不覺得現在是正確的,但是可能會很方便。起初,我有同樣的感覺,但很快就會發現維護自己的代碼和基礎結構的成本是不合算的),您至少還有兩個選擇:

1)簡易表格認證

將所有管理頁面都放在一個文件夾(例如/ Admin)下,然后使用“ 表單身份驗證”來保護對此文件夾的訪問。 只有在數據庫Web.Config中定義的用戶才能訪問這些頁面。 這沒有ASP.Net成員資格靈活,但可以為您提供大部分所需的服務。 在安全性方面,這將與您的網站一樣安全,經過良好測試並且有據可查。

2)使用Facebook OAuth

您提到您的使用可以訪問Facebook。 您可以使用Facebook進行身份驗證 盡管您將無法獲取用戶名和密碼,但是可以找回令牌,然后可以根據已知的權限集進行驗證。 但是,與1)相比,這項工作要多得多,並將使您與Facebook API未來的潛在變化聯系在一起。 但是,它也將從經過良好測試和安全性中受益,但是您幾乎無法控制實際用戶信息。

順便說一句,也請考慮對Google更好!

編寫自定義身份驗證處理程序非常危險。 有很多方法可以解決該問題,並使您的網站容易受到攻擊。

我也理解您的投訴,即表單身份驗證極其復雜。 我面臨類似的十字路口,因此決定構建自己的身份驗證系統FSCAuth 它是BSD許可的。 它的設計非常簡單,幾乎可以允許您使用任何數據庫格式進行映像。 設置它所要做的全部工作就是在數據庫中實現一個小的4功能接口,並填充一些配置字段。

暫無
暫無

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

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