8 Stimmen

MVC 2 AntiForgeryToken - Warum symmetrische Verschlüsselung + IPrinciple?

Wir haben vor kurzem unsere Lösung auf MVC 2 aktualisiert, und dies hat die Art und Weise aktualisiert, wie die AntiForgeryToken Werke. Leider passt dies nicht mehr zu unserem AJAX-Framework.

Das Problem ist, dass MVC 2 jetzt symmetrische Verschlüsselung verwendet, um einige Eigenschaften des Benutzers zu verschlüsseln, einschließlich der Benutzerdaten. Name Eigenschaft (von IPrincipal ). Wir sind in der Lage, einen neuen Benutzer sicher über AJAX zu registrieren, woraufhin nachfolgende AJAX-Aufrufe ungültig werden, da sich das Anti-Fälschungs-Token ändert, wenn dem Benutzer ein neuer Auftraggeber zugewiesen wurde. Es gibt auch andere Fälle, in denen dies passieren kann, z. B. wenn ein Benutzer seinen Namen ändert usw.

Meine Hauptfrage ist, warum sich MVC 2 überhaupt die Mühe macht, symmetrische Verschlüsselung zu verwenden? Und warum kümmert es sich dann um den Benutzernamen Eigenschaft auf den Auftraggeber?

Wenn ich das richtig verstanden habe, ist jedes beliebige gemeinsame Geheimnis ausreichend. Das Grundprinzip ist, dass dem Benutzer ein Cookie mit einigen spezifischen Daten (HttpOnly!) gesendet wird. Dieses Cookie muss dann mit einer Formularvariablen übereinstimmen, die bei jeder Anfrage mit Seiteneffekten (in der Regel POSTs) zurückgeschickt wird. Da dies nur zum Schutz vor seitenübergreifenden Angriffen gedacht ist, ist es einfach, eine Antwort zu erstellen, die den Test leicht bestehen würde, aber nur, wenn man vollen Zugriff auf das Cookie hat. Da ein seitenübergreifender Angreifer keinen Zugriff auf Ihre Benutzer-Cookies haben wird, sind Sie geschützt.

Welchen Vorteil bietet die symmetrische Verschlüsselung bei der Überprüfung des Inhalts des Cookies? Das heißt, wenn ich bereits ein HttpOnly-Cookie gesendet habe, kann der Angreifer es nicht außer Kraft setzen (es sei denn, ein Browser hat ein großes Sicherheitsproblem), warum muss ich es dann noch einmal überprüfen?

Nachdem ich darüber nachgedacht habe, scheint es einer dieser Fälle zu sein, in denen eine zusätzliche Sicherheitsschicht erforderlich ist - aber wenn Ihre erste Verteidigungslinie ausgefallen ist (HttpOnly), dann wird der Angreifer die zweite Schicht sowieso überwinden, da er vollen Zugriff auf die Cookie-Sammlung des Benutzers hat und sich einfach direkt als dieser ausgeben könnte, anstatt einen indirekten XSS/CSRF-Angriff zu verwenden.

Natürlich könnte ich ein wichtiges Problem übersehen, aber ich habe es noch nicht gefunden. Wenn es hier offensichtliche oder subtile Probleme gibt, dann würde ich sie gerne kennenlernen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X