Laufzeit laden von ValidateAntiForgeryToken Salt-Wert
Betrachten ASP.NET MVC-Anwendung mit der Salt
parameter in der [ValidateAntiForgeryToken]
Richtlinie.
Das Szenario ist so, dass die app wird von vielen Kunden. Es ist nicht sehr wünschenswert, die Salt
zur Kompilierzeit bekannt ist.
Die aktuelle Strategie ist das suchen der Salt-Wert in der web.config.
[ValidateAntiForgeryToken(Salt = Config.AppSalt)]
//Config.AppSalt is a static property that reads the web.config.
Dies führt zu einem compile-Zeit-Ausnahme, was darauf hindeutet, dass die Salt
muss eine Konstante zur compile-Zeit.
Attribut-argument muss ein konstanter Ausdruck sein, typeof-Ausdruck oder ein array creation expression eines Attributs parameter Typ
Wie kann ich änderungen an der Anwendung zu ermöglichen, für eine Laufzeit laden der Salt
so, dass die app nicht erneut gesalzen und neu kompiliert werden für jedem Kunden?
Berücksichtigen, dass die Salt
ändern nicht Häufig, wenn überhaupt, so dass die Möglichkeit der Aufhebung von form
- Als Levi die Microsoft MVC security-Leute-Staaten, brauchen Sie nicht, dies zu tun.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Salz-Eigenschaft gemeint ist eine Compilezeit-Konstante. Es ist einfach eine Möglichkeit zum verknüpfen einer bestimmten form zu einer bestimmten Handlung-Methode. Zum Beispiel, wenn Sie ein login-Formular, die Sie verwenden möchten, das Salz "Login" für diese bilden, so dass ein token, das war gültig für die login-form nicht verwendet werden können, für die das Passwort ändern, etc.
In allen Fällen, die app-machine-Taste, wird automatisch als zusätzliche - salt-Wert. So ein anti-XSRF-token für eine Anwendung können nicht verwendet werden, für eine andere Anwendung, auch dann, wenn die Salz-Werte Lesen "Login". Die Maschine Schlüssel ist einstellbar in Web.config <machineKey> Abschnitt.
Hatte ich die Anforderung, verschiedene Salze, die für verschiedene Kunden. In diesem Fall habe ich Dixin-Lösung für die Injektion der Salz-zur Laufzeit.
Anti-Forgery-Request-Rezepte Für ASP.NET MVC und AJAX in dem Abschnitt mit dem Titel "Geben Sie nicht-Konstanten Salz in der runtime".
Dekorieren Sie Ihre Controller mit einem neuen Attribut:
Dieses neue Attribut ist definiert als: