Ich lerne jetzt ein Konzept der ASP.NET-Core-Entwicklung und während meines Lernens habe ich aus dem folgenden article herausgelesen, dass eine Webseite vor unbefugtem Zugriff geschützt werden muss, um prever aus Cross Site Request Fälschungsangriffe.Schutz vor Cross-Site-Request-Forgery-Attacken
Ich habe einige Tutorials gefolgt und für meine eigene (Lernen) Anwendung ich habe:
- Implementiert die
[Authorize]
Dekorateur auf der Spitze meines Controller (in meinem Fall war es API-Controller) - In der Aktuelle
POST
,UPDATE
Methoden, die ich implementiert habeif (ModelState.IsValid)
Anruf zu überprüfen, wenn Parameter übergeben wurden - ViewModels anstelle von tatsächlichen verwendet Modelle, die in einer Datenbank bei der Kommunikation mit einer Website (oder API in diesem Fall) verwendet werden.
Ich habe die folgenden drei Fragen:
1) Ist dieser Ansatz ausreichend, um meine Website zu schützen? Als Authentifizierungsmethode verwende ich einfach CookieAuthentification
. Oder mit anderen Worten: (Da dies eine zu breite Frage sein könnte), ist dieser Ansatz auf einem richtigen Weg, mögliche Angreifer zu entmutigen?
2) In meinem aktuellen Setup (mit ViewModels anstelle von realen Modellen) ist [ValidateAntiForgeryToken]
notwendig? Wenn ja, welchem Zweck dient es?
3) Die Frage (die mich am meisten interessiert) betrifft ViewModels. Wie kann ViewModels meine Website vor unbefugten Angriffen schützen? Ich verstehe, dass ich in meinem ViewModel nur Variablen/Eigenschaften offenlegen kann, auf die der Benutzer Zugriff haben soll (und den Rest ausblenden), aber wie kann er meine Website schützen, wenn ich noch meine ID (Primärschlüssel) offen legen muss (wie ohne ID kann ich mir nicht vorstellen wie man zB DELETE/UPDATE Anrufe machen würde)
Jede Hilfe in dieser Angelegenheit wäre mehr als geschätzt, da ich immer noch dieses Thema lerne.