Ich habe eine Website, die viele asp.net-Anwendungen hostet. Einige davon sind in MVC2 geschrieben, einige sind in MVC3 geschrieben, einige sind nicht im Haus geschrieben und binär implementiert (obwohl wir Quellcode finden können) und viele, viele mehr sind in ASP.Net 2.0 Webforms geschrieben. Auf all diesen Seiten verwenden wir eine einzige Anmeldeseite aus einer Login-Anwendung. Wir können dies tun, weil fast alle in Anwendungen:Benutzerdefinierte FormsAuthenticationTicket Validierung
- gleichen Anwendungspool
- Die gleiche Maschine Schlüssel
- Das gleiche Login Cookie-Name
Mein Problem ist, dass sie auch das Sicherheitsproblem teilen, kein Cookie-Spoofing-Schutz. Mein Plan ist es, einige zusätzliche Informationen (erste 2 Bytes von ip, user agent) dem Login-Cookie hinzuzufügen (möglicherweise im Feld useradata) und dies dann bei jeder Anfrage zu verifizieren, bevor der Cookie akzeptiert wird.
Meine Frage ist, wo asp.net das Formularauthentifizierungsticket prüft und den Benutzer lädt und kann ich überschreiben, um ein paar zusätzliche Dinge zu überprüfen, bevor Sie das Login verwenden.
Es wäre ein Plus, wenn ich diesen Code nicht jedem global.cs hinzufügen und in eine DLL schreiben und auf diese DLL in der Konfigurationsdatei verweisen könnte.
Auf einer Unternote eine benutzerdefinierte SessionIDManager ich hinzugefügt, um zu sehen, ob das helfen würde, aber das nur mit meinem sessionID nicht die Anmeldungs Cookie geholfen. – Jeff
Können Sie das Application_AuthenticateRequest-Ereignis in Global.asax verwenden - einige relevante Kommentare können hier sein: http://StackOverflow.com/Questions/875472/AuthenticaterEquest-Event – SilverlightFox
Der Grund, asp.net keine IP-Überprüfung auf Cookies ist, weil es ist eine sehr dumme Idee. Es gibt viel zu viele Bedingungen, unter denen sich die IP-Adresse des Benutzers ändert, z. B. bei der Verwendung mobiler Geräte (dies kann sich von Minute zu Minute ändern) oder wenn die dynamische IP-Adresse eines Benutzers geändert wird oder geteilte Proxys gepoolt werden. Außerdem verhindert dies nicht, dass jemand den Cookie von einem Computer hinter einer Firewall auf einen anderen Computer hinter derselben Firewall kopiert. Sie versuchen, eine unwahrscheinliche Sicherheitsanfälligkeit zu beheben, indem Sie die Verwendbarkeit der Website durch die Benutzer unterbrechen, und es funktioniert nicht einmal richtig! –