Dieser Artikel stellt häufige PHP-Angriffe vor (detaillierte Erklärungen zu 6 Arten von Angriffen). Er kann auch als Referenz für diejenigen dienen, die gemeinsam einen Blick darauf werfen
1. SQL-Injection
SQL-Injection ist ein böswilliger Angriff, bei dem Benutzer SQL-Anweisungen in Formularfelder eingeben, um die normale SQL-Ausführung zu beeinträchtigen. Es gibt auch eine Möglichkeit, die über den Befehl system() oder exec() injiziert wird und über denselben SQL-Injection-Mechanismus verfügt, aber nur auf Shell-Befehle abzielt.
[python]Einzelkopie anzeigen
$username = $_POST['username'] ;
$query = "select * from auth where username = '".$username."'";
echo $query; >
$db = new mysqli(, 'demo', 'demo ', 'demodemo' ); $result = $db->query($query); 🎜>if
"
Erfolgreich angemeldet“;
} else {
echo "
Anmeldung fehlgeschlagen";
}
SQL-Injection-Optionen verhindern:* Verwenden Sie mysql_real_escape_string(), um Daten zu filtern
* Überprüfen Sie manuell, ob alle Daten den richtigen Datentyp haben
*Verwenden Sie vorbereitete Anweisungen und Variablen binden
*Vorbereitete Anweisungen verwenden
*Daten und SQL-Logik trennen
*Vorverarbeitete Anweisungen werden automatisch gefiltert (z. B. maskiert). )
*Verwenden Sie dies als Codierungsstandard, um Neulingen im Team zu helfen, die oben genannten Probleme zu vermeiden
'wählen Sie Namen, Bezirk aus der Stadt, in der der Ländercode=?' 🎜> $countrycode = 'hk';
$stmt ->bind_param("s", $countrycode);
$stmt->execute( );
$stmt->bind_result($name, $district);
while ( $stmt ($stmt->fetch() ){
echo $name.', '.$district; 🎜>
} $stmt ->close();
}
XSS (Cross-Site Scripting) ist ein Angriff, bei dem der Benutzer einige Daten in Ihre Website eingibt, einschließlich clientseitigem Skript (normalerweise JavaScript). Gibt die Daten aus, wenn Sie sie nicht filtern. Dieses Skript wird ausgeführt, wenn der vom Benutzer übermittelte Textinhalt empfangen wird.
*AJAX(XMLHttpRequest)
XSS-Angriffe verhindern
3. Sitzungsfixierung
Dies ist die gleiche Idee wie bei der Sitzungsfixierung, es geht jedoch darum, die Sitzungs-ID vom Angreifer zu stehlen, wenn die Sitzungs-ID in einem Cookie gespeichert ist. Kann auch durch Sniffing oder gestohlen werden von einem Proxyserver, wenn die Sitzungs-ID in der URL enthalten ist:
*ID aktualisieren
*Bei Verwendung von Sitzungen stellen Sie bitte sicher, dass Benutzer SSL verwenden
Klartext anzeigen
'http://example.com/single_click_to_buy.php?user_id=123&item=12345'>
Verhindern Sie die Fälschung standortübergreifender Anfragen
Stellen Sie im Allgemeinen sicher, dass der Benutzer dies tut die aus Ihrem Formular stammen, und stimmen mit jedem Formular überein, das Sie versenden. Es gibt zwei Punkte, die Sie beachten müssen:
Wenden Sie geeignete Sicherheitsmaßnahmen für Benutzersitzungen an, z. B. die Aktualisierung von IDs für jede Sitzung und die Verwendung von SSL für Benutzer.
Generieren Sie ein weiteres einmaliges Token und betten Sie es in das Formular ein, speichern Sie es in der Sitzung (eine Sitzungsvariable) und überprüfen Sie es beim Absenden.
6. Code-Injection
[python]view plain copy
Thema wählen:
grün>Grün
🎜> >
if($theme) {
require( $theme.'.txt');
} 🎜>
?> ;
Code-Injection verhindern
* Benutzereingaben filtern
* In php.ini festlegen, um „allow_url_fopen“ und zu deaktivieren allow_url_include. Dadurch wird „require/include/fopen“ für Remote-Dateien deaktiviert.
Andere allgemeine Grundsätze
– verwenden Sie zum Beispiel eine einzeilige Ausführung – Einzelpunktauthentifizierung und Datenbereinigung
– zum Beispiel in alle einbetten Sicherheitsrelevante Seiten Eine PHP-Funktion/Datei, die alle Anmelde-/Sicherheitslogikprüfungen übernimmt
3. Stellen Sie sicher, dass Ihr Code aktualisiert und mit den neuesten Patches gepatcht ist.
Verwandte Empfehlungen:
Das obige ist der detaillierte Inhalt vonHäufige PHP-Angriffe (detaillierte Erklärung von 6 Angriffsarten). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!