2016-05-16 15 views
2

Wie kann ich einen CSRF-Angriff auf meinen öffentlichen WCF-Soap-Dienst verhindern?CSRF-Angriff auf WCF-Dienste verhindern

ich weiß, dass die Hauptlösung mit einem CSRF-Token ist, aber wie kann ich das erreichen?

Hoffentlich gibt mir jemand eine Idee, oder zumindest um mir zu sagen, dass WCF nicht CSRF angegriffen werden kann.

+0

Ein WCF-Dienst kann in einem Browser nicht verwendet werden. Daher gibt es keinen Spielraum für diese Art von Angriffen. –

+1

@TomRedfern: Das ist nicht wahr: https://msdn.microsoft.com/en-us/library/bb924552(v=vs.110).aspx – SilverlightFox

+0

@SilverlightFox - ich würde scheinen, um korrigiert zu stehen! –

Antwort

3

Ja, CSRF gilt für WCF, wenn Sie enabled AJAX support for your service haben.

Eine schnelle und einfache Möglichkeit zur Minderung besteht darin, einen benutzerdefinierten Header wie den X-Requested-With Anforderungsheader zu überprüfen. Diese Header können nicht domänenübergreifend übergeben werden, ohne dass CORS aktiviert ist.

Um diese Lösung weiter zu stärken, können Sie auch ein Token pro Sitzung setzen und dieses dann auch im Header übergeben. Siehe this answer. Dies würde Sicherheitslücken in Browser-Plugins wie Flash und Silverlight mindern, in denen der erste zuvor einen Fehler hatte, bei dem beliebige Header domänenübergreifend gesetzt werden konnten, was sonst nicht erlaubt sein sollte.

+0

Danke, aber was, wenn ich nicht AspNetCompatibility-Modus verwende, und ich brauche keine Sitzungen, wie ich den Token pro Sitzung anwenden könnte? –

+0

Könnten Sie bitte Ihre Frage mit weiteren Details zu Ihrer Anwendung und Architektur aktualisieren? z.B. Was sind die Clients für Ihren Service, weil Nicht-Webbrowser keinen CSRF-Schutz benötigen und wenn Sitzungen nicht verwendet werden, warum brauchen Sie dann CSRF-Schutz? – SilverlightFox

+0

eigentlich, die Idee meiner Dienste zu öffentlichen getrennt Dienste, die über verschiedene Domänen angefordert, so dass jede App wird gebeten, eine Verbindung zu diesem Dienst über Benutzername und Passwort, die von der Soap-Header gesendet werden können. Es gibt also keine Sitzungen, die hier angewendet werden müssen. –

Verwandte Themen