Ideen für XSRF Sicherheits Implementierung in ASP.NET MVC mit Doppel übermittelt von Cookies

StackOverflow https://stackoverflow.com/questions/291102

  •  08-07-2019
  •  | 
  •  

Frage

Ich habe zu versuchen, entschied sich die Doppel eingereichten Cookies mit Technik zu versuchen, XSRF Angriffe auf der Website arbeite ich an zu verhindern. So wie ich es hier geschrieben haben, nach unten ist, werden alle Aktionen, die tatsächlich etwas tun, außer Informationen zu bekommen, werden Beiträge sein. Ermittelt wird ... uh ... GETs. Jede Form Zweitens, dass die Stellen den Schlüssel / Cookie-Combo haben wird.

Meine Frage ist, was ist der einfachste Weg sei, dies in einer ASP.NET MVC-Web-Anwendung zu implementieren?

Nicht meine eigene Frage zu beantworten, aber hier sind meine ersten Gedanken:

Im Moment meiner Controller alle erben von einem Basis-Controller, so mein erster Gedanke war, die OnActionExecuted Methode außer Kraft zu setzen für das Vorhandensein des benötigten Formularfeldes zu überprüfen, und von dort, wenn er sie findet, überprüfen Sie sie gegen den Cookie und entweder erlaubt der Post fortzusetzen oder es zu einem gewissen Fehlerseite zu treten.

Für das Formular Teil ich meine eigenen HTML-Erweiterung Methoden zur Erzeugung wie ... Html.BeginSecureForm dachte (), die alle die gleichen Methoden wie Begin Überlastungen (Falls ich brauche sie), aber Auto erzeugt die Pseudozufallsschlüssel und Cookies und legt das Cookie und das Formularfeld in der Form (IF ITS A POST!) automagically.

Sorry, wenn diese Art von durcheinander gewürfelt wird, ich habe Hinweise auf diesen Seiten verstreut und ich versuche, sie zu organisieren. Ein Teil davon ist mein Entwurf für diese XSRF Sicherheit Sache zu verstehen.

War es hilfreich?

Andere Tipps

Die eingebaut in ASP.NET MVC XSRF Schutz hat einen Nachteil:. Es den Kunden noch ein weiteres Cookie sendet nach unten

  

Zur gleichen Zeit, Html.AntiForgeryToken() wird gibt dem Besucher ein Cookie namens __RequestVerificationToken , mit dem gleichen Wert wie der Zufall versteckten Wert oben gezeigt.

Ich würde es vorziehen, nicht an den Client eine Tonne von Cookies herabs, so dass, wenn Sie für jeden Benutzer eine einzigartige Server-Side-Tracker haben (wie, sagen wir, eine Sitzung Tabelle in der Datenbank ..) Sie verwenden können, stattdessen. Eine weniger cookie -. Nur herabs einen eindeutigen Hash von etwas in der Benutzertabelle

Aber dann gibt es anonyme Benutzer, die nicht halten ein Benutzerkonto und haben somit keine serverseitige Tracking. In diesem Fall ich frage mich, wenn Sie irgendwie das bestehende ASP.NET_SessionId Cookie greifen könnten (wenn Sitzungen aktiviert sind), das ist sein bereits für jeden Benutzer gesendet .. anstatt noch eine weitere Plätzchen zu schaffen.

möglich? Oder bin ich das nicht durch denken ..?

Eine Methode Traktion gewinnt, ist die verschlüsselte Token Muster, indem ein Rahmen genannt ARMOR umgesetzt. Die Prämisse ist, dass Sie weder Session noch Cookies benötigen, um CSRF-Schutz aufrecht zu erhalten. Die verschlüsselten Token Pattern eine Rijndael-verschlüsselten Token dessen nutzt Integrität durch einen SHA256 Hash-Algorithmus beibehalten wird.

Der ARMOR Framework ist einfach sowohl in MVC und Web-API-Anwendungen zu implementieren. Volldurchlauf hier .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top