2012-04-12 4 views
0

Ich arbeite auf asp.net (4.0) Website. Ich habe versucht, Formularauthentifizierung() zu verwenden. Offensichtlich versuchen einige Seiten sicher zu haben. Mein Verständnis, dass die beste Lösung für die Sicherheit ist, setzen cookieless = "UseCookies", so dass es nicht ID in URL schreiben wird.ASP.NET - cookieless = UseCookies - nur Sitzungs-ID im Browser? Keine Kunden-Cookies?

Meine Frage ist was genau passiert, wenn ich cookieless = "UseCookies" verwende.

  1. Ist eine Sitzung erstellt und einige id im Browser gespeichert (~ Speicher, der später verwendet, um Informationen von IIS Server Side-Sitzung "Cookie" zu ziehen) oder es ist tatsächlich Ehepartner zu "regulären" Client-Seite verschlüsselte Cookie zu erstellen?

(Ich versuche offenbar schriftlich zu vermeiden URL und auf Client-Seite Cookies - nicht sicher, ob alle, die vermieden werden könnten)

  1. Wenn ID in Browser setzt tut alle Browser speichern lassen Sitzungs-ID darin. Wenn es vom Browser nicht erlaubt ist, was wird passieren? Gibt es eine Möglichkeit, es vorab zu überprüfen?

Also ich denke, wie wir alle ich nur versuche, richtige sichere Anwendung zu bauen, wenn jemand einen anderen Vorschlag hat, wird es sehr geschätzt werden.

Tanks viel,

+0

Sie sollten weitere Tags zu Ihren Fragen hinzufügen, sonst wird es für die Leute schwer sein, sie zu finden. Versuchen Sie asp.net oder etwas. –

Antwort

0

Wenn Sie Cookies zulassen so cookieless = „false“ gesetzt die sessionID im Cookie gespeichert werden und es wird über die gesamte Länge der Sitzung (die standardmäßig in 20 Minuten erreichbar sein .)

Wenn Sie Cookies zulassen und der Benutzer Cookies im Browser deaktiviert hat, wird sessionID nirgendwo gespeichert, und jedes Mal, wenn der Benutzer eine neue Anfrage erstellt (indem er auf eine andere Seite geht), erhält er eine neue sessionID keine Daten können aufbewahrt werden.

Sie können cookieless = "true" verwenden, das sessionID an die URL verschlüsselt und anfügt, sodass der Benutzer die Sitzung behalten kann, obwohl seine Cookies aktiviert sind.

Es gibt auch ein cookeless = "AutoDetect", das bestimmt, ob der Benutzer Cookies deaktiviert oder aktiviert hat und basierend darauf entweder ein Cookie mit Sitzungs-ID erstellt oder es an die URL wirft. Der Nachteil davon ist, dass jede Anfrage auf Ihrer Seite zu 3 Anfragen führt, eine Anfrage bestimmt, ob der Benutzer Cookies aktiviert hat, eine Abfrage-Zeichenfolge mit dem Ergebnis der ersten Anfrage anfügt und eine dritte zur entsprechenden URL.

Es gibt auch eine Einstellung, die basierend auf Daten des Browsers die Cookies aus und wieder einstellt. Wenn also jemand Ihre Seite mit einem 10 Jahre alten Mobiltelefon durchsucht, fügt er wahrscheinlich Cookies an die URL an, da es keine Möglichkeit gibt, Cookies auf diesem Gerät zuzulassen.

Ich hoffe, das hilft. Ich persönlich würde den Benutzer dazu auffordern, Cookies zu aktivieren und sich nicht einmal um andere Fälle zu kümmern, aber manche Leute (wie mein Chef zum Beispiel) mögen die Idee nicht und wollen, dass alle unterstützt werden.

+0

Vielen Dank für Ihre Antwort. – woiix

+0

Lassen Sie mich sicher gehen, wenn Sie richtig sind. 1. Um die Sesson-ID beizubehalten, könnte sie im Browser (oder URL, falls Divice dies nicht unterstützt) oder im Client-Cookie sein. So könnte URL-Anfrage Hijackt sowie Cookie könnte gestohlen werden und wir haben keine bessere Möglichkeit, es zu bauen? Ich verstehe dieses Problem nur für die Lebensdauer der Sitzung 2. Wenn Schutz = "Alle" in Form in (Web.config) ist es richtig, dass Session und Cookie angeschrieben sind? 3. Kann ich überprüfen, ob das Gerät Cookies unterstützt und zur URL schreibt? Agine bedankt sich für die Hilfe. – woiix

+0

1. Ja, aber die SessionID ist immer sowohl in URL als auch in Cookie verschlüsselt. 3. Ich denke ASP.NET hat eine Liste mit Geräten und deren Cookie-Support-Werten. Ich bin mir nicht 100% sicher, wie das funktioniert. Ich bin sicher, dass Sie dafür googeln können. –