Ist die Überprüfung der Referrer genug zum Schutz gegen einen CSRF-Angriff?
Frage
Ist die Überprüfung der Referrer genug zum Schutz gegen einen Cross-Site-Request-Forgery-Angriff? Ich weiß, dass die Referrer gefälscht werden können, aber ist es eine Möglichkeit für den Angreifer, dass für die Kunden zu tun? Ich weiß, Token sind die Norm, aber würde das funktionieren?
Lösung
Unter anderem die Referrer verwendet, wird für Benutzer, deren Browser (oder Corporate-Proxies) nicht funktionieren nicht Referrer senden.
Andere Tipps
Dies ist eine 3-jährige Frage mit vier verschiedenen Antworten im Grunde das gleiche besagt: Folgen Sie der Norm, Tokens, versuchen Sie nicht, referer zu verwenden.
Während Token ist immer noch die sicherste Option in Betracht gezogen, die Referer verwendet, ist oft viel einfacher, und ist auch ziemlich sicher. Nur sicher sein, überhaupt PUT / POST / PATCH / DELETE-Anfragen schauen und ihm einen Angriff überlegen, ob ein referer oder aus der falschen Domäne fehlt. Wirklich wenige (wenn überhaupt) in Vertretung der Referer für diese Art von Anfragen entfernen.
Siehe auch die OWASP Empfehlung über den Referer-Header als CSRF Überprüfung Schutz:
Überprüfen der Referer-Header
Auch wenn es trivial den Referer-Header auf eigene Faust zu fälschen Browser, ist es unmöglich, dies in einem CSRF-Angriff zu tun. Überprüfen der referer ist ein häufig verwendetes Verfahren zur Verhinderung von CSRF auf eingebettetes Netzwerk-Geräte, weil es erfordert keinen Pro-Benutzer-Zustand. Diese Speicher eine nützliche Methode, CSRF Prävention macht ein referer, wenn ist knapp.
Allerdings ist die referer Überprüfung als ein schwächer sein von den CSRF-Schutz. Zum Beispiel kann offen Redirect Anfälligkeiten sein verwendet GET-basierte Anfragen zu nutzen, die mit einem referer geschützt sind prüfen. Es sollte beachtet werden, dass GET-Anfragen nie einen Staat entstehen soll Veränderung, da dies eine Verletzung der HTTP-Spezifikation.
Darüber hinaus gibt es gemeinsame Umsetzung Fehler mit Referer prüft. Zum Wenn beispielsweise der Ursprung CSRF-Angriff von einer HTTPS-Domain dann dem referer wird weggelassen. In diesem Fall sollte das Fehlen einer referer sein als Angriff sein, wenn die Anforderung einen Zustand ausführt Veränderung. Beachten Sie auch, dass der Angreifer begrenzten Einfluss auf das hat referer. Zum Beispiel, wenn die Domain des Opfers „site.com“ dann ein Angreifer haben die CSRF ausnutzen stammen aus „site.com.attacker.com“ der Narren kann eine gebrochene referer Check-Implementierung. XSS kann verwendet werden, eine referer Prüfung zu umgehen.
Die einzig richtige Antwort ist „unter anderem die Referrer verwendet, wird für Benutzer, deren Browser (oder Corporate-Proxies) nicht funktionieren nicht Referrer senden.“ Davon abgesehen, das ist sehr heutzutage selten. Alle Leute sagen, dass Referrer gefälscht werden können, sind voll davon. Sie können nicht fälschen Referrer, wenn Sie die Kontrolle über die andere Person die Browser auf eine andere Art und Weise haben (XSS / Trojan / etc). Wenn Sie Referrer für App-Nutzung benötigen, sind sie genauso effektiv wie CSRF-Token. So stellen Sie sicher, dass Sie machen 100% sicher, dass Ihr Scheck korrekt ist (z. B. wenn Sie regex sicherstellen, dass Sie von Anfang an prüfen verwenden „^“ des Referrer).
Nein nicht genug ist, ist es sehr einfach für die Angreifer, dass für die Kunden zu tun, wie Sie fragen, alle Angreifer zu tun hat, ist es, den Benutzer zu bekommen in einem Link von ihm geschaffen klicken, von diesem Punkt ist Spiel über
Der Angreifer wird die Form in der Original-Website verwendet kopieren, und den Rest fälscht, weil jetzt der Code auf seiner eigenen Website ist, dann tragen vor, dass das Opfer Website
Wie man auf die Frage erwähnen, Token sind die Norm, wenn es darum geht, CSRF zu verhindern
Folgen Sie der Norm. Tokens
Überprüfen der Referrer eigentlich nichts tut, weil der Antrag ohnehin von dieser Seite kommt! Das Problem, das Sie zu verhindern versuchen, ist die Seite ohne dass der Benutzer aufgefordert werden, etwas zu tun; nicht die Seite selbst getroffen zu werden.
Tokens sind die Art und Weise gegen diese zu schützen. Sie erzeugen ein, sollte sie in der Sitzung, und es in die HTML schreiben, dann, nach dem Posten, überprüfen Sie die, die Sie erhalten, und sehen, ob es das übereinstimmt Sie erwarten. Wenn dies nicht der Fall, nicht Sie. So oder so, erzeugen Sie ein neues Token danach.
Es kann auch von Bedeutung sein zu berücksichtigen, dass dieser Wille Chaos Menschen auf, wenn die mehrere Seiten haben; so können Sie einen anderen Token pro Seite machen.