簡體   English   中英

使用子域保護MVC應用程序

[英]securing an mvc application using subdomains

我有一個mvc應用程序,允許企業使用https://storea.mydomain.com https://storeb.mydomain.com等登錄

每個業務都有創建的用戶,我有一個將業務ID與EmployeeId匹配的表。 我試圖鎖定該應用程序,以使經過認證的businessA用戶無法從BusinessB訪問信息。

我要檢查允許用戶訪問子域的最佳位置是哪里? 我是否重寫OnActionExecuted操作,檢查子域是什么,然后查看會話值以查看它們是否匹配,如果不同則將其注銷。

還是有一種更優雅的方式來做到這一點?

有關最佳做法的建議和建議會很棒! 謝謝

定制的Authorize屬性似乎是執行此操作的好地方。 您可以覆蓋AuthorizeCore方法,在該方法中您可以訪問HttpContext,並且可以基於子域執行自定義授權邏輯。

據我了解,您的MVC應用程序使用單個數據庫來存儲您擁有的所有業務的信息。 這就是為什么您會擔心Bussines A獲取Bussines B信息的原因。

因此,對我來說,您可以在數據庫中檢查哪些信息可以訪問每個用戶,具體取決於他們所屬的企業。

我認為您甚至不需要為此使用子域。

在這種情況下,我將使用存儲庫模式,並且在每次查詢/數據訪問中,請確保您傳遞包含業務ID的where子句。 例如:


select * from orders where orderid=@orderId and companyID=@companyId

在查詢上執行此操作非常重要,因為您需要適當的數據規則以防止查詢不正確。 例如,對Authorize屬性執行此操作並不能保證某人沒有篡改數據以加載另一家公司的信息。

此外,我還有http://mvcsecurity.codeplex.com/擴展名,可幫助保護存儲在頁面上的ID,以防止篡改。

暫無
暫無

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

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