2012-04-15 141 views
1

我已經使用註釋來阻止未經授權的用戶訪問數據,但現在面臨停止經過身份驗證的用戶編輯和刪除彼此記錄的問題。 如果這是通過登錄用戶本地主機/用戶/編輯/ 43鍵入的 - 記錄可能會改變!即使你的記錄不屬於登錄用戶。保護編輯和刪除記錄

這就是我用於這個查詢只允許登錄用戶查看他們自己的記錄。

var Adverts = from b in db.Adverts 
         .Where(c => c.Customer.Username == User.Identity.Name) 
             select b; 

難以嘗試爲用戶實現編輯和刪除安全性。 任何建議將是最受歡迎的

回答

2

上面所做的是正確的,但在實際應用更改之前,您還應該嘗試使用此裝入進行編輯和刪除。通過這種方式,您可以檢查是否返回記錄,並返回404(未發現而非未經授權),因爲這些是數據加載規則。相同類型的邏輯適用於您只需根據用戶ID,公司ID等加載數據的多租戶應用程序

您將很快意識到有多少表需要用戶標識,公司標識,等

+0

我一直在這裏很長一段時間,任何更多的信息將有所幫助 – 2012-04-15 18:54:25

+0

哪一部分具體? – 2012-04-16 01:15:46

+0

我曾嘗試在編輯中使用它,並用if語句刪除它,但發現難以實現;不知道該怎麼辦! – 2012-04-16 01:45:03

1

首先,你可以改變你的用戶導航到他們的記錄的方式。目前,您允許他們通過URL(使用GET)獲取彼此的記錄。您可以通過僅允許他們通過POST(表單提交)進行訪問來將其鎖定更多一點。如果您的數據特別敏感,我強烈建議您進行此更改。

但是,不管怎樣,如果數據是敏感的,那麼你應該檢查他們是否有權改變他們試圖改變的東西。這不是由框架提供的 - 您需要對其進行編碼。在顯示頁面之前,我會檢查誰擁有該記錄,如果他們試圖規避您的安全性,則會發回401。但是,當他們嘗試併發布變更時,您可能會決定這樣做,因爲他們可能會很高興他們看到了這一點。

我希望這會有所幫助。