Wie verhindern Sie CSRF-Angriffe (CSRF) CSRF in PHP?
Jun 28, 2025 am 02:25 AMUm CSRF-Angriffe in PHP zu verhindern, implementieren Sie Anti-CSRF-Token. 1) Generieren und speichern Sie sichere Token mit Random_Bytes () oder Bin2hex (Random_Bytes (32)), speichern Sie sie in $ _Session und geben Sie sie in Formularen als versteckte Eingaben ein. 2) Validieren von Token bei der Einreichung, indem Sie den Post-Token streng mit dem von Sitzungen gelegenen vergleicht; Nicht übereinstimmende Anfragen mit einem 403 -Fehler ablehnen. 3) Schützen Sie Ajax/API -Anfragen, indem Sie das Token in Header oder K?rper einbeziehen, die h?ufig aus einem Meta -Tag abgerufen werden. 4) Verwenden Sie HTMLSpecialChars (), wenn Sie Token ausgeben, um XSS -Lecks zu verhindern. 5) Regenerieren Sie Token nach kritischen Aktionen wie Anmeldung. 6) Setzen Sie Samesit = Strict/Lax für Sitzungs Cookies und vermeiden Sie es, staatliche ?nderungen zu erhalten. 7) Benutzer für sensible Aktionen erneut authentifizieren. Diese Schritte gew?hrleisten einen umfassenden CSRF -Schutz über alle Anforderungstypen bei der Aufrechterhaltung der Sicherheitsintegrit?t.
Um CSRF-Angriffe in PHP zu verhindern, müssen Sie eine solide Anti-CSRF-Strategie durchführen-haupts?chlich mit Token. Die Idee ist einfach: Jede staatlich ver?ndernde Anfrage (wie die Formulareinreichungen) sollte ein einzigartiges, unvorhersehbares Token enthalten, das nur der legitime Benutzer kennt. Ohne dieses Token sollte der Server die Anfrage nicht verarbeiten.
Hier erfahren Sie, wie man es in der Praxis tats?chlich gut macht.
Generieren und speichern Sie Anti-CSRF-Token
Jedes Mal, wenn Sie ein Formular anzeigen, das eine Aktion ausführt (z. B. Einstellungen oder Kauf t?tigen), generieren Sie ein sicheres Token und speichern Sie es an einem sicheren Ort auf der Serverseite - wie in der Sitzung.
- Verwenden Sie
random_bytes()
oderbin2hex(random_bytes(32))
um ein starkes Token zu erstellen. - Speichern Sie es in
$_SESSION
damit Sie es sp?ter vergleichen k?nnen, wenn das Formular eingereicht wird.
Zum Beispiel:
if (leer ($ _ Session ['csrf_token'])) { $ _Session ['csrf_token'] = bin2hex (random_bytes (50)); }
Dann in Ihrer Form:
<Eingabe type = "Hidden" name = "csrf_token" value = "<?
Auf diese Weise enth?lt jede Formulareinreichung ein Token, das der Angreifer nicht erraten oder reproduzieren kann.
Validieren Sie das Token bei der Einreichung von Formular
Wenn das Formular eingereicht wird, prüfen Sie, ob das Token in den Postdaten dem entspricht, was in der Sitzung gespeichert ist.
- überprüfen Sie immer auf die Anwesenheit des Tokens.
- Vergleichen Sie es streng (
===
), um Probleme mit dem Typ-Juggling zu vermeiden. - Wenn es nicht übereinstimmt, lehnen Sie die Anforderung mit einem 403 -Fehler oder ?hnlichen Fehler ab.
Beispielcode:
if (! isset ($ _ post ['csrf_token']) || $ _post ['csrf_token']! == $ _Session ['csrf_token']) { http_response_code (403); Die ('Ungültiges CSRF -Token'); }
Ein kleines, aber wichtiges Detail: Verwenden Sie immer htmlspecialchars()
wenn Sie das Token in HTML ausgeben, um zu verhindern, dass XSS den Token austritt.
Vergessen Sie auch nicht, das Token nach kritischen Aktionen wie Anmeldung oder Kennwort?nderung zu drehen oder zu regenerieren.
Vergessen Sie nicht Ajax -Anfragen und APIs
Wenn Ihre Website JavaScript verwendet, um Formulare zu senden oder API -Anrufe zu t?tigen, ben?tigen diese Anfragen auch CSRF -Schutz.
- Fügen Sie das CSRF -Token in die Header oder den K?rper der AJAX -Anfrage ein.
- Sie k?nnen das Token in einem Meta -Tag oder Inline -Skript speichern und es von dort aus lesen, wenn Sie den Anruf t?tigen.
Legen Sie beispielsweise ein Meta -Tag in Ihrem HTML -Kopf ein:
<meta name = "csrf-token" content = "<?
Dann in deinem JS:
Fetch ('/Update-Profil', { Methode: 'Post', Header: { 'X-csrf-token': document.querySelector ('meta [name = "csrf-token"]'). Inhalt }, K?rper: Neue urlSearchparams ({Name: 'John Doe'}) });
Suchen Sie im Backend nach dem Token im X-CSRF-Token
-Header und validieren Sie es wie bei regul?ren Formen.
Eine Sache, die zu beachten ist: Wenn Sie eine einseitige App (SPA) oder eine mobile App erstellen, die mit Ihrem PHP-Backend spricht, sollten Sie sich mit gleichen Cookies und CSRF-Token zusammenstellen, um einen besseren Schutz zu erhalten.
Bonus-Tipps: Samesit Cookies und nur HTTP-Formulare
Auch bei Token k?nnen Sie zus?tzliche Schritte unternehmen, die Sie unternehmen k?nnen:
- Setzen Sie
SameSite=Strict
oderLax
auf Ihrem Sitzungs-Cookie, um Cross-Origin-Anfragen zu reduzieren. - Stellen Sie sicher, dass Ihre Formulare bei Bedarf nur Postanfragen akzeptieren-nicht zulassen, dass die ?nderungen der Get-basierten staatlichen ?nderungen zulassen.
- Für sensible Operationen (wie das L?schen eines Kontos) hilft die Neuauthentifizierung zu einer weiteren Ebene.
Dies sind keine Ersatz für CSRF -Token, aber sie arbeiten gut neben ihnen.
Das ist es im Grunde genommen. Der CSRF -Schutz in PHP l?uft darauf hinaus, gute Token zu erzeugen, sie ordnungsgem?? zu validieren und sicherzustellen, dass sie in allen relevanten Anforderungen enthalten sind. Es ist nicht überm??ig komplex, aber leicht durcheinander zu bringen, wenn Sie nur einen Schritt überspringen.
Das obige ist der detaillierte Inhalt vonWie verhindern Sie CSRF-Angriffe (CSRF) CSRF in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

Um zwei PHP -Arrays zusammenzuführen und eindeutige Werte zu behalten, gibt es zwei Hauptmethoden. 1. Verwenden Sie für Index -Arrays oder nur Deduplizierung Array_merge und Array_unique -Kombinationen: Zuerst merge array_merge ($ array1, $ array2) und verwenden Sie dann Array_unique (), um sie endgültig zu erhalten, um ein neues Array zu erhalten, das alle eindeutigen Werte enth?lt. 2. Verwenden Sie für assoziative Arrays und m?chten im ersten Array Schlüsselwertepaare beibehalten: $ result = $ array1 $ array2, was sicherstellt, dass die Schlüssel im ersten Array vom zweiten Array nicht überschrieben werden. Diese beiden Methoden gelten für verschiedene Szenarien, je nachdem, ob der Schlüsselname beibehalten wird oder nur der Fokus liegt

exit () ist eine Funktion in PHP, mit der die Skriptausführung sofort beendet wird. Zu den gemeinsamen Verwendungen geh?ren: 1. Beenden Sie das Skript im Voraus, wenn eine Ausnahme erkannt wird, z. 2. Ausgabe Zwischenergebnisse w?hrend des Debuggens und Stoppenausführung; 3. Aufrufen von Exit () nach Umleitung in Verbindung mit Header (), um die nachfolgende Codeausführung zu verhindern; Zus?tzlich kann Exit () String -Parameter als Ausgabeinhalt oder Ganzzahlen als Statuscode akzeptieren, und sein Alias ??ist die ().

Die rationale Verwendung semantischer Tags in HTML kann die Klarheit, Zug?nglichkeit und SEO -Effekte der Seitenstruktur verbessern. 1. für unabh?ngige Inhaltsbl?cke wie Blog-Beitr?ge oder Kommentare muss sie in sich geschlossen werden. 2. für klassifizierungsbezogene Inhalte, die normalerweise Titel enthalten, ist für verschiedene Module der Seite geeignet. 3.. Wird für Hilfsinformationen im Zusammenhang mit dem Hauptinhalt verwendet, nicht jedoch Kern, wie z. B. Seitenleistenempfehlungen oder Autorprofile. In der tats?chlichen Entwicklung sollten Etiketten kombiniert und andere, überm??ige Verschachtelung vermeiden, die Struktur einfach halten und die Rationalit?t der Struktur durch Entwicklerwerkzeuge überprüfen.

Es gibt zwei M?glichkeiten, ein Array in PHP zu erstellen: Verwenden Sie die Funktion array () oder verwenden Sie Klammern []. 1. Die Verwendung der Funktion array () ist eine traditionelle Art und Weise mit guter Kompatibilit?t. Definieren Sie Indexarrays wie $ fruits = Array ("Apple", "Banana", "Orange") und assoziative Arrays wie $ user = array ("name" => "John", "Age" => 25); 2. Die Verwendung [] ist eine einfachere M?glichkeit, seit Php5.4 wie $ Color zu unterstützen

Wenn Sie auf die Eingabeaufforderung sto?en "Dieser Vorgang erfordert die Eskalation der Berechtigungen", müssen Sie die Administratorberechtigungen ben?tigen, um fortzufahren. Zu den L?sungen geh?ren: 1. Klicken Sie mit der rechten Maustaste auf das Programm "AS Administrator ausführen" oder setzen Sie die Verknüpfung so fest, dass immer als Administrator ausgeführt wird. 2. überprüfen Sie, ob es sich bei dem Girokonto um ein Administratorkonto handelt, falls nicht die Unterstützung von Administratoren, wenn nicht. 3.. Verwenden Sie Administratorberechtigungen, um eine Eingabeaufforderung oder eine PowerShell zu ?ffnen, um relevante Befehle auszuführen. 4. Umgehen Sie die Beschr?nkungen, indem Sie bei Bedarf Dateienbesitz oder ?nderungen der Registrierung ?ndern. Solche Vorg?nge müssen jedoch vorsichtig sein und die Risiken vollst?ndig verstehen. Best?tigen Sie die Erlaubnisidentit?t und versuchen Sie die oben genannten Methoden normalerweise l?sen.

Die M?glichkeit zur Verarbeitung von Roh Postdaten in PHP besteht darin, $ rawdata = file_get_contents ('php: // input') zu verwenden, die zum Empfangen von JSON-, XML- oder anderen benutzerdefinierten Formatdaten geeignet ist. 1.PHP: // Eingabe ist ein schreibgeschützter Stream, der nur in Postanforderungen gültig ist. 2. H?ufige Probleme umfassen Serverkonfiguration oder Middleware -Lese -Eingabestreams, wodurch es unm?glich ist, Daten zu erhalten. 3. Die Anwendungsszenarien umfassen das Empfangen von Front-End-Abrufanfragen, Service-Rückrufe von Drittanbietern und das Erstellen von Rastfulapis; V. 5. Gew?hnlicher HTM

Um PHP -Datei -Uploads sicher zu verarbeiten, müssen Sie die Quelle und die Type und die Eingabe des Dateinamens und des Pfades überprüfen, Serverbeschr?nkungen festlegen und Mediendateien zweimal verarbeiten. 1. überprüfen Sie die Upload -Quelle, um CSRF durch Token zu verhindern, und erkennen Sie den realen MIME -Typ über die Finfo_file mithilfe der Whitelist -Steuerung. 2. Benennen Sie die Datei in eine zuf?llige Zeichenfolge um und bestimmen Sie die Erweiterung, um sie gem?? dem Erkennungstyp in einem Verzeichnis ohne Web zu speichern. 3. Die PHP -Konfiguration begrenzt die Hochladengr??e und das tempor?re Verzeichnis Nginx/Apache verbietet den Zugriff auf das Upload -Verzeichnis. 4. Die GD -Bibliothek stellt die Bilder neu, um potenzielle b?swillige Daten zu l?schen.

Inphp, variablenArepassedByValuebyDefault, BedeutungFunctionsSignmentsRecepeacopyofthedata, whilepassingyreferenceAllowsModificationStoeTheoriginalVariable.1.Weit PassingByValue, Changestothecopydonottheoriginal, Asshown, Asshown, $ b = $ -Pectheoriginal, Asshown, $ $ -Pectheoriginal, Asshown, $ organ
