2016-03-22 16 views
7

Dies könnte eine einfache Frage sein, ich hoffe, es ist zumindest.Cookies und ASP.NET Core

Ich habe begonnen, in den Release Candidate von ASP.NET Core zu sehen, und ich kann sehen, dass ein Großteil der Konfiguration wurde aus der alten web.config-Datei und in JSON strukturierte Dateien (sowie XML und jede andere Middleware, die Sie vielleicht selbst schreiben möchten).
Die eine Sache, die ich noch nicht herausgefunden habe, ist etwas, das in der alten web.config-Methode so einfach war und einige der grundlegenden Komponenten Ihrer Website wie Cookies absichert.

Zuvor würden wir die secure, httpOnly usw. in web.config einstellen und wenn es um die Bereitstellung ging, würde eine nette kleine Transformationsdatei die Werte für uns ändern und die neue Datei am Ende ausspucken. Nachdem wir ein wenig gelesen haben, scheint web.config so gut wie tot zu sein. Wie können wir also die gleichen Ergebnisse erzielen?

Ich weiß, wir können verschiedene Config-Dateien basierend darauf laden, ob bestimmte Variablen wie Umgebung auf DEV, STAGING, PRODUCTION etc. gesetzt sind, aber dies scheint nur Transformationen mit etwas zu ersetzen, das eine Transformation für alle Absichten und ist Zwecke außer, wie es tatsächlich geladen ist?

Habe ich hier etwas verpasst oder habe ich es geschafft, mich selbst in ein Durcheinander zu bringen?

+0

aspnet.core selbst liest web.config überhaupt nicht. Es wird nur verwendet, wenn Sie IIS verwenden, um Anforderungen an eine AspNet Core-Anwendung weiterzuleiten. In diesem Fall wird der IIS nur als Reverse-Proxy ausgeführt. – Pawel

+0

Haben Sie sich die [docs] (http://docs.asp.net/en/latest/security/authentication/cookie.html) für Cookies in Asp.Net Core angeschaut? Ich bin mir nicht ganz sicher, was Ihr vorletzter Absatz fragt. Sie fragen sich, wie Sie neben Cookies auch Transformationen durchführen können? –

+0

@Will entschuldigen, ich werde versuchen, ein wenig klarer zu sein, ich weiß, dass Sie cookie-basierte Authentifizierung aktivieren können und darin können Sie Optionen wie 'httpOnly' definieren, aber meine Frage bezieht sich auf Cookies im Allgemeinen, da ich sie nicht für die Authentifizierung verwenden aber immer noch sicherstellen wollen, dass sie sicher/richtig gehandhabt werden. –

Antwort

11

Für eine allgemeine Cookie manuell in Ihrer Anwendung erstellt, steuern Sie die Fahnen für die Sicherheit beim Erstellen - zum Beispiel:

Response.Cookies.Append(
    "COOKIE_NAME", 
    "COOKIE_VALUE", 
    new CookieOptions() 
    { 
     Path = "/", 
     HttpOnly = false, 
     Secure = false 
    } 
); 

Hier Httponly auf true JS Client-Seite den Zugriff auf das Cookie würde verhindern vlaue, und die Einstellung Secure auf true würde nur zulassen, dass der Cookie über HTTPS geliefert/empfangen wird.

Beim Hinzufügen von Cookies zur Antwort werden keine Standardeinstellungen angewendet, wie in the source code for the ResponseCookies class zu sehen ist.

Für die verschiedenen Middlewares, die ihre eigenen Cookies erstellen und konsumieren (wie die Session-Middleware, die Sie in Ihrer Antwort erwähnt haben), können sie ihre eigenen Konfigurationsoptionen haben, die diese Flags für die Cookies steuern, die sie selbst erstellen wird für Cookies, die Sie an anderer Stelle in Ihrer Anwendung erstellen, keinen Unterschied machen.

+0

Also habe ich richtig angenommen, zumindest aus dem, was ich bisher gesammelt habe, gibt es keine Möglichkeit, Optionen wie "httpOnly" und "secure" auf Cookies, die in der Web App generiert werden, global zu kontrollieren? Das scheint etwas kontraintuitiv zu sein –

+0

Ich glaube nicht, dass es da ist - durch die [offiziellen Dokumente] (http://docs.asp.net/) und den [Quellcode für die ResponseCookies-Klasse] (https: // github.com/aspnet/HttpAbstractions/blob/master/src/Microsoft.AspNet.Http/ResponseCookies.cs), die Cookies behandelt, die der Antwort hinzugefügt werden, kann ich nichts sehen, das einen Standard bei der Schaffung eines Plätzchens verwenden würde. –

+0

@Jak Ich habe meine Antwort aktualisiert, um zu zeigen, dass keine Standardeinstellungen angewendet werden. –

0

Ok, herausgefunden, scheint mich immer noch daran zu erinnern, dass die meisten Dinge in .NET5 jetzt aktiviert sind, einschließlich Dinge wie Session, wo Cookies jetzt leben, durch die docs lesen, fand ich schließlich, was ich brauchte um Cookies zu aktivieren und zu konfigurieren.

+2

Ich glaube nicht, dass dies korrekt ist - das wird die Cookies steuern, die nur für den Sitzungsstatus verwendet werden, nicht für alle Cookies im Allgemeinen. Ich werde eine Antwort mit meinem Verständnis veröffentlichen, wie es funktioniert. –

+0

Ich verdopple das, der Link für die Dokumente deckt nur die Sitzungsstatus-Cookies ab. Ich kämpfe immer noch mit dem Setzen von Cookies in asp.net Kern ... Seufzen für die Einfachheit von PHP zu Zeiten ... setcookie() ... Ich wünsche es in asp.net Kern – John

+0

Dies ist keine Antwort, es ist ein Status-Update. Bitte posten Sie die Schritte. –