Ist die Überprüfung der Referrer genug zum Schutz gegen einen CSRF-Angriff?

StackOverflow https://stackoverflow.com/questions/1413930

  •  06-07-2019
  •  | 
  •  

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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top