Frage

In asp.net Ich bin der Umsetzung einer IHttpModule CSRF-Attacken zu mildern. Es injiziert in die Antwort HTML eine versteckte Form Parameter mit dem asp.net SessionID auf GETs. Auf Pfählen überprüft es dann sicher zu stellen, dass versteckter Parameterwert die aktuellen SessionID übereinstimmt. Soweit ich weiß, ist der einzige Weg, um den Sitzungs-Wert erhalten aus dem Cookie, die nicht gelesen oder von der bösartigen Website ermittelt werden können. Gibt es etwas, ich bin mit Blick auf?

War es hilfreich?

Lösung

Dieser Ansatz ist richtig. Sie müssen sicherstellen, dass alle Aktionen über eine GET-Operation vorhanden sind „sicher“ (die beste Praxis ohnehin ist), da Sie Ihre XSRF Schutz POSTs nur Anwendung sind.

Für zusätzliche Versicherung, Sie könnten es verwenden, um auf GETs auch (durch einen URL-Parameter, um alle Ihre Links hinzufügen und Überprüfung für sie in jeder Anforderung GET), aber es ist umständlich.

Wenn Sie zusätzliche paranoid sind, können Sie eine andere Zufallszahl für die alternative ID wählen. Dies würde auch schützen, wenn ein Browser Ihrer Session-Cookie zugängliche einige feindlichen Javascript auf einer anderen Website falsch macht. Wenn eine Sitzung erstellt wird, wählen Sie eine andere große Zufallszahl und speichern Sie es in Ihrer Sitzung.

Andere Tipps

Im Idealfall würden Sie etwas anderes als Session-ID verwenden, aber das ist es im Grunde. OWASP schlägt eine zufällige Form Elementnamen verwenden, die in der Sitzung des Benutzers gespeichert wird. Auf diese Weise ein Angreifer nicht einmal in der Lage sein, das richtige versteckte Feld zu schmieden.

http://www.owasp.org/index.php/Top_10_2007 A5 # Schutz

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