„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Ist `mysqli_real_escape_string ()` genug, um SQL -Injektionsangriffe zu verhindern?

Ist `mysqli_real_escape_string ()` genug, um SQL -Injektionsangriffe zu verhindern?

Gepostet am 2025-02-11
Durchsuche:177

Is `mysqli_real_escape_string()` Enough to Prevent SQL Injection Attacks?

Ist Mysqli "mysqli_real_escape_string" ausreichend gegen SQL -Angriffe? Wie durch URI2X angegeben, ist diese Maßnahme jedoch unzureichend.

Anfälligkeit für sql injection

"mysqli_real_esescape_string ()" Eskennt bestimmte Zeichen, und lässt Ihren Früherschein für SQL -Verletzbar für SQL -Verletzungsabläufe verlässt. Injektionsangriffe. Beispielsweise könnte der folgende Code immer noch anfällig sein:

$ mail = mysqli_real_escape_string ($ db_con, $ _post ['E -Mail']); $ query = "Select * von Benutzern, wobei E -Mail = '". $ E -Mail. "'";

Ein Angreifer könnte eine E -Mail -Adresse wie "E -Mail "@example.com" eingeben, um die Abfrage auszunutzen, und zusätzliche SQL -Anweisungen nach der entflossenen Eingabe hinzuzufügen.
$email = mysqli_real_escape_string($db_con, $_POST['email']);
$query = "SELECT * FROM users WHERE email = '" . $email . "'";

verwenden von vorbereiteten Aussagen

anstelle von "mysqli_real_esescape_string ()" ist der effektivste Weg, um SQL -Injektionen zu verhindern, darin, vorbereitete Aussagen zu verwenden. Vorbereitete Anweisungen separate Daten von der Abfragezeichenfolge, die Datenkontamination verhindern.

$ stmt = $ db_con-> vorbereiten ("in Benutzer einfügen (E-Mail, PSW) Werte (?,?)"); $ stmt-> bind_param ('ss', $ mail, $ psw); $ mail = mysqli_real_escape_string ($ db_con, $ _post ['E -Mail']); $ psw = mysqli_real_escape_string ($ db_con, $ _post ['psw']); $ stmt-> execute ();

$stmt = $db_con->prepare("INSERT INTO users (email, psw) VALUES (?, ?)");
$stmt->bind_param('ss', $email, $psw);
$email = mysqli_real_escape_string($db_con, $_POST['email']);
$psw = mysqli_real_escape_string($db_con, $_POST['psw']);
$stmt->execute();

in Situationen, in denen vorbereitete Aussagen nicht machbar sind, um einen strengen Charakter-Whitelist zu implementieren, kann die Sicherheit garantieren. Dies beinhaltet die Filterung, um sicherzustellen, dass sie nur erlaubte Zeichen enthält.

schlussfolgerung

"mysqli_real_escape_string ()" allein ist unzureichend, um sich vor SQL -Injektionen zu schützen. Vorbereitete Aussagen und strenge Whitelisting bieten robustere Schutzmaßnahmen gegen diese Angriffe.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3