it-swarm.com.de

Reicht die Überprüfung der Referer- und Origin-Header aus, um CSRF zu verhindern, vorausgesetzt, Anforderungen mit keinem von beiden werden abgelehnt?

Ist es möglich, CSRF zu verhindern, indem Sie die Header Origin und Referer überprüfen? Ist dies angemessen, vorausgesetzt, Anfragen mit keinem von beiden werden blockiert?

13
Demi

Erweiterung der Antworten von @Sjoerd und @lindon.


Origin vs Referer vs CSRF-Token

Der Grund, warum OWASP empfiehlt, auch ein CSRF-Token zu verwenden, ist höchstwahrscheinlich, dass zum Zeitpunkt der Abgabe dieser Empfehlung ein erheblicher Teil der Browser den Header Origin noch nicht unterstützt hat. Dies ist nicht mehr der Fall, aber Menschen sind Schimpansen .

Um die Privatsphäre zu schützen, kann jede Browseranforderung entscheiden, den Header Referer wegzulassen. Daher ist es wahrscheinlich am besten, nur den Header Origin zu überprüfen. (Falls Sie Benutzern erlauben möchten, ihre Privatsphäre zu schützen)

Der Origin -Header ist in einigen Fällen null . Beachten Sie, dass alle diese Anforderungen GET-Anforderungen sind, was bedeutet, dass sie keine Nebenwirkungen haben sollten.

Solange Sie sicherstellen, dass die böswillige Website, die die Anforderungen mit Ihrem Browser sendet, die Antworten nicht lesen kann, sollte es Ihnen gut gehen. Dies kann mithilfe geeigneter CORS-Header sichergestellt werden. (Verwende nicht Access-Control-Allow-Origin: *!)

Um ein "Click-Jacking" zu verhindern, setzen Sie den Header X-Frame-Options: DENY. Dadurch wird Ihrem Browser mitgeteilt, dass kein Teil Ihrer Website in einem Iframe angezeigt werden darf.


Der "neue" Ansatz

Festlegen der Cookie-Eigenschaften SameSite=lax oder SameSite=strict verhindert CSRF-Angriffe. Dies ist jedoch eine ziemlich neue Funktion und kann nicht alleine verwendet werden, nur weil dies noch nicht von allen gängigen Browsern unterstützt wird. Sie können die Unterstützung verfolgen HIER .

Wenn die Browser dies tun, werden die Benutzer wahrscheinlich weiterhin empfehlen, Origin/Referer/CSRF-Token zu überprüfen. Wenn sie dies tun - ohne einen guten Grund anzugeben, ist es wahrscheinlich, dass sie Schimpansen sind.

12

Ja, das ist sicher.

Der Referer-Header ist jedoch nicht unbedingt obligatorisch, sodass möglicherweise Browser oder Proxys vorhanden sind, die keinen Referer-Header senden. Dies würde bedeuten, dass diese Clients nicht auf Ihre Website zugreifen können.

Mit der Einführung von Referrer-Richtlinie ist es möglich, den Referer-Header aus einer gefälschten Anforderung zu entfernen. Zum Schutz vor CSRF müssen daher alle Anforderungen blockiert werden, denen ein Referer nd Origin-) Header fehlt.

Bearbeiten: --- (Dieses Dokument enthält einige Zahlen darüber, welcher Teil der Clients einen Referer-Header weglässt.

10
Sjoerd

OWASP empfiehlt Überprüfung eines CSRF-Tokens zusätzlich zur Überprüfung von Origin und Referer.

0
lindon