1063 Stimmen

Das Rails-Authentizitäts-Token verstehen

Ich bin in einige Probleme in Bezug auf die Authentizität Token in Rails laufen.

Ich würde das Echtheitsmerkmal wirklich gerne verstehen.

Haben Sie eine vollständige Informationsquelle zu diesem Thema oder würden Sie sich die Zeit nehmen, dies hier im Detail zu erklären?

39voto

andi Punkte 14214

El Authenticity Token ist Rails' Methode zur prévenir Cross-Site Request Forgery (CSRF- oder XSRF-Angriffe)". .

Vereinfacht gesagt, stellt es sicher, dass die PUT/POST/DELETE-Anfragen (Methoden, die den Inhalt verändern können) an Ihre Webanwendung vom Browser des Kunden gestellt werden und nicht von einem Dritten (einem Angreifer), der Zugang zu einem auf der Client-Seite erstellten Cookie hat.

34voto

Yuan He Punkte 1123

Seit Authenticity Token ist so wichtig, und in Rails 3.0+ können Sie mit

 <%= token_tag nil %>

zu erstellen

<input name="authenticity_token" type="hidden" value="token_value">

überall

27voto

jdp Punkte 734

Beachten Sie, dass der Authentizitäts-Token-Mechanismus zu Wettlaufsituationen führen kann, wenn Sie mehrere gleichzeitige Anfragen von demselben Client haben. In diesem Fall kann Ihr Server mehrere Authentizitäts-Token generieren, obwohl es nur einen geben sollte, und der Client, der das frühere Token in einem Formular erhält, wird bei seiner nächsten Anfrage scheitern, weil das Sitzungs-Cookie-Token überschrieben wurde. Es gibt einen Bericht über dieses Problem und eine nicht ganz triviale Lösung hier: http://www.paulbutcher.com/2007/05/race-conditions-in-rails-sessions-and-how-to-fix-them/

11voto

uma Punkte 2814

Methoden Wo authenticity_token ist erforderlich

authenticity_token ist im Falle von idempotenten Methoden wie post, put und delete erforderlich, da sich idempotente Methoden auf Daten auswirken.

Warum sie erforderlich ist

Es ist erforderlich, um bösartige Aktionen zu verhindern. authenticity_token wird in der Sitzung gespeichert, wann immer ein Formular auf Webseiten zum Erstellen oder Aktualisieren von Ressourcen erstellt wird, wird ein Authentizitäts-Token in einem versteckten Feld gespeichert und mit dem Formular an den Server gesendet. Vor der Ausführung einer Aktion wird das vom Benutzer gesendete authenticity_token mit authenticity_token in der Sitzung gespeichert. Wenn authenticity_token gleich ist, wird der Prozess fortgesetzt, ansonsten werden keine Aktionen durchgeführt.

7voto

Pradeep Sapkota Punkte 1948

Was ist ein authentication_token?

Hierbei handelt es sich um eine zufällige Zeichenfolge, die von der Rails-Anwendung verwendet wird, um sicherzustellen, dass der Benutzer eine Aktion von der App-Seite aus anfordert oder durchführt und nicht von einer anderen App oder Website.

Warum ist ein authentication_token notwendig?

Zum Schutz Ihrer Anwendung oder Website vor Cross-Site Request Forgery.

Wie fügt man ein authentication_token zu einem Formular hinzu?

Wenn Sie ein Formular mit dem form_for-Tag erstellen, wird automatisch ein authentication_token hinzugefügt, ansonsten können Sie <%= csrf_meta_tag %> .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X