我現在正在學習ASP.NET核心開發的概念,並且在學習期間,我從以下article中發現了一個網頁需要防止未經授權的訪問,以防止從跨站請求僞造攻擊。防止跨站點請求僞造攻擊
我已經跟着幾個教程和我自己(學習)的應用程序,我有:
- 實現我的控制器的頂部
[Authorize]
裝飾(對我來說這是API控制器) - 在實際
POST
,UPDATE
方法我已經實現if (ModelState.IsValid)
調用來檢查,如果有必要的參數都已經過去了 - 二手的ViewModels而不是在數據庫與網站(或API在這種情況下)通信時所使用的實際模型。
我有以下三個問題:
1)是這種方法足以爲了保護我的網站?作爲一種身份驗證方法,我使用簡單的CookieAuthentification
。或換句話說(因爲這可能是太廣泛的問題),這種方法在正確的軌道上讓人感到沮喪嗎?
2)在我目前的設置(使用ViewModels而不是真實模型)是[ValidateAntiForgeryToken]
必要?如果是,它的用途是什麼?
3)現在問題(我最感興趣的是)關於ViewModels。 ViewModels如何保護我的網站免受未經授權的攻擊?我明白,在我的ViewModel中,我只能公開我希望用戶有權訪問的變量/屬性(並隱藏其餘部分),但是如何保護我的網站,當我仍然需要公開我的ID(主鍵)時因爲沒有ID我無法想象如何做,如DELETE/UPDATE調用)?
在這個問題上的任何幫助將不勝感激,因爲我仍然在學習這個主題。