Bei der Arbeit mit SQL-Abfragen ist es wichtig, sich vor SQL-Injection-Angriffen zu schützen, indem vom Benutzer bereitgestellte Eingaben maskiert werden . Es stellt sich die Frage: Ist die Funktion mysql_real_escape_string() noch erforderlich, wenn vorbereitete Anweisungen verwendet werden?
In einer bestimmten Abfrage:
<code class="php">$consulta = $_REQUEST["term"]."%"; $sql = $db->prepare('select location from location_job where location like ?'); $sql->bind_param('s', $consulta); $sql->execute(); $sql->bind_result($location); $data = array(); while ($sql->fetch()) { $data[] = array('label' => $location); }</code>
Vorbereitete Anweisungen erhöhen die SQL-Sicherheit, indem sie Daten von der Abfrage trennen und verhindern böswillige Injektionen. Dies macht mysql_real_escape_string() jedoch nicht überflüssig.
Um sicherzustellen, dass die Dateneingabe die Abfrage nicht verändert, kann eine einfache Änderung in Ihrem Code sie weiter sichern:
<code class="php">$sql->execute([$consulta]);</code>
Dies Change übergibt Parameter direkt über die Ausführungsmethode unter Verwendung des „?“ Platzhalter. Denken Sie jedoch daran, Benutzereingaben vor der Ausgabe über htmlspecialchars() zu verarbeiten, um sich gegen HTML-Injection-Angriffe zu schützen.
Durch die Einhaltung der ordnungsgemäßen Verwendung vorbereiteter Anweisungen machen Sie mysql_real_escape_string() überflüssig und erhöhen die Sicherheit Ihrer SQL-Abfragen .
Das obige ist der detaillierte Inhalt vonIst mysql_real_escape_string() bei vorbereiteten Anweisungen noch notwendig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!