2015-04-29 142 views
0

我真的只是想從安全角度看下面的建議有多愚蠢。授予從一個網站到另一個網站的安全訪問

我有兩個網站。一個是管理門戶,另一個是會員門戶。

在管理門戶中,管理員可以檢索成員列表,我需要爲管理員提供登錄到成員門戶的功能,而無需輸入成員登錄憑證。

兩者都是IIS內部的獨立網站,因此這個討論可以說它們位於不同的服務器上。

這兩個網站都訪問相同的SQL Server數據庫。

我在想管理員可以點擊「Login as Member」鏈接創建一個隨機代碼字符串並將其與成員編號一起保存到數據庫中。

我可以將代碼和成員編號作爲查詢字符串參數傳遞給成員門戶。

然後,成員門戶將讀取這些值並在數據庫中檢查它們以驗證代碼字符串是否存在以及是否與正在傳遞的成員編號匹配。然後,我可以登錄該成員並在數據庫中設置一個標誌,以將代碼設置爲正在使用,因此對於將來的請求無效。

我想繞過這個黑客需要成功猜測隨機代碼,並將其傳遞到該代碼旁邊的相應成員編號,並將該組合標記爲未使用的數據庫中。

這看起來似乎不太可能,因爲在生成的代碼和正在使用的代碼之間只經過了幾秒鐘。

如有必要,我可以隨時檢查請求的IP地址,因爲管理門戶的用戶都共享相同的固定IP地址。

那麼你認爲上述方法可以經得起安全審查的審查,還是需要走SSO路線?

+0

什麼類型的安全審查?登錄後是否可以訪問財務,醫療,社會安全號碼等?如果您使用的是短期GUID並且正在檢查IP地址,那麼比將大量代碼發送到電子郵件地址的密碼恢復方法更安全。此外,它是否足夠安全取決於管理員所在的環境的安全程度。當他們離開辦公桌時,他們是否鎖定桌面?進入大樓是否受到控制?等IT安全依賴於大量的物理安全... –

+0

此外,它可能會假設,但你打算使用HTTPS? –

+0

謝謝託尼 - 是的HTTPS將被用於此次討論,我期待確定提出的方法是否會被視爲安全,假設其他元素是安全的,如管理員鎖定計算機,樓宇控制等。 – BugLover

回答

2

您的方法非常合理。我可以證實,因爲我只是爲了這個原因而實施了這樣的解決方案。我們分析了選項和曝光。實施後,我們的申請通過了PCI Complaince Audit

原因:

  • SSL是Esential!防止嗅探器。必要。如果沒有加密,嗅探器可以檢測到您的GUID,並可以有一個窗口使用它)

  • 正如託尼指出,的GUID實際上是不可猜測

  • Guid 標記到期應該在24小時內過期

建議:

  • 檢查,對IP是好的。但不要被它欺騙成一種安全感。任何人都可以在標頭中僞造IP 。爲了安全對XSSCSRF使用AntiForgery tokens

的防僞標記是用__RequestVerificationToken這幾乎是很難猜測爲您的GUID填充你的HTTPHeaders一個cookie。

  • 考慮使用已建立的身份驗證框架,如.NET Identity 2和多租戶。

已建立的框架負擔加密您的密碼。 MS框架,如簡單會員身份融入現代ASP.NET框架,給你的功能非常強大的基礎,依靠。

如果您使用的是像傳統ASP或.NET 2.0這樣的舊框架,那麼classic Membership Provider更合適。

如果要創建新的MVC利用實體框架 5個應用,我強烈建議使用標識2.1

  • 考慮多租戶。雖然您的解決方案沒有任何問題,但如果管理員和用戶共享成員資格提供程序,您的解決方案將更加清晰。管理員可以登錄主站點並從數據庫「獲取」令牌。然後沒有曝光。
+1

謝謝 - 這真是很好的建議,非常感謝 – BugLover

2

假設爲管理員使用HTTPS和適當的物理和IT安全流程和程序,此方法應該足夠。它比大多數金融網站密碼重置更安全,通常只需要一個被盜用的電子郵件帳戶和一些個人信息來重置密碼。如果您也檢查始發客戶端請求的IP地址範圍,則黑客必須已經可以訪問您的系統或網絡。此外,如果您將代碼設置爲GUID,則(實際上)不可能有人猜測。

您可以通過在每次發生此事件(或至少每次因失敗密鑰而導致每次失敗時)在數據庫中存儲記錄來添加一層檢查黑客攻擊的嘗試,並且每次運行檢查時都會看到如果它發生得太頻繁(比如過去一小時100次,或者某個事情 - 正確的數字取決於你期望它發生的頻率)。如果發生頻率過高,請讓IT人員發送警報並進行恢復,以便用戶必須手動輸入憑據。

聲明:我不是任何安全專家,所以我會很樂意推遲聲稱這種狀態的任何人。由於缺乏答案,我在這裏沉重。

+0

非常有用,並感謝讓球滾動的回覆 – BugLover

+0

非常好的一點。關於檢查用戶「釣魚」鑰匙的部分是一個有趣的問題。未經授權方重複訪問您的網站,應視爲DOS攻擊。陰險的問題。 –

相關問題