Laravel - CSRF-Schutz

CSRF bezieht sich auf Cross Site Forgery-Angriffe auf Webanwendungen. CSRF-Angriffe sind die nicht autorisierten Aktivitäten, die die authentifizierten Benutzer des Systems ausführen. Daher sind viele Webanwendungen für diese Angriffe anfällig.

Laravel bietet CSRF-Schutz auf folgende Weise:

Laravel enthält ein integriertes CSRF-Plug-In, das Token für jede aktive Benutzersitzung generiert. Diese Token überprüfen, ob die Vorgänge oder Anforderungen vom betreffenden authentifizierten Benutzer gesendet werden.

Implementierung

Die Implementierung des CSRF-Schutzes in Laravel wird in diesem Abschnitt ausführlich erörtert. Die folgenden Punkte sind bemerkenswert, bevor Sie mit dem CSRF-Schutz fortfahren:

  • CSRF wird in HTML-Formularen implementiert, die in den Webanwendungen deklariert sind. Sie müssen ein verstecktes validiertes CSRF-Token in das Formular aufnehmen, damit die CSRF-Schutz-Middleware von Laravel die Anforderung validieren kann. Die Syntax wird unten gezeigt -

<form method = "POST" action="/profile">
   {{ csrf_field() }}
   ...
</form>
  • Sie können bequem JavaScript-gesteuerte Anwendungen mithilfe der JavaScript-HTTP-Bibliothek erstellen, da dies CSRF-Token für jede ausgehende Anforderung enthält.

  • Die Datei nämlich resources/assets/js/bootstrap.js registriert alle Token für Laravel-Anwendungen und enthält meta Tag, der speichert csrf-token mit Axios HTTP library.

Formular ohne CSRF-Token

Betrachten Sie die folgenden Codezeilen. Sie zeigen ein Formular, das zwei Parameter als Eingabe verwendet:email und message.

<form>
   <label> Email </label>
      <input type = "text" name = "email"/>
      <br/>
   <label> Message </label> <input type="text" name = "message"/>
   <input type = ”submit” name = ”submitButton” value = ”submit”>
</form>

Das Ergebnis des obigen Codes ist das unten gezeigte Formular, das der Endbenutzer anzeigen kann -

Das oben gezeigte Formular akzeptiert alle Eingabeinformationen eines autorisierten Benutzers. Dies kann die Webanwendung für verschiedene Angriffe anfällig machen.

Bitte beachten Sie, dass die Schaltfläche "Senden" Funktionen im Controller-Bereich enthält. DaspostContactDie Funktion wird in Controllern für die zugehörigen Ansichten verwendet. Es ist unten gezeigt -

public function postContact(Request $request) {
   return $request-> all();
}

Beachten Sie, dass das Formular keine CSRF-Token enthält, sodass die als Eingabeparameter freigegebenen vertraulichen Informationen für verschiedene Angriffe anfällig sind.

Formular mit CSRF-Token

Die folgenden Codezeilen zeigen Ihnen das mit CSRF-Token neu gestaltete Formular:

<form method = ”post” >
   {{ csrf_field() }}
   <label> Email </label>
   <input type = "text" name = "email"/>
   <br/>
   <label> Message </label>
   <input type = "text" name = "message"/>
   <input type = ”submit” name = ”submitButton” value = ”submit”>
</form>

Die erzielte Ausgabe gibt JSON mit einem Token zurück, wie unten angegeben -

{
   "token": "ghfleifxDSUYEW9WE67877CXNVFJKL",
   "name": "TutorialsPoint",
   "email": "[email protected]"
}

Dies ist das CSRF-Token, das beim Klicken auf die Schaltfläche "Senden" erstellt wird.