SQL-Injection mit dynamischen Tabellennamen verhindern
Als Reaktion auf eine Diskussion über die Verhinderung von SQL-Injection wurde vorgeschlagen, PDO oder mysql_real_escape_string zu verwenden ist zum Schutz dynamischer Tabellennamen unwirksam. Eine weitere Analyse zeigt jedoch, dass diese Vorschläge unter bestimmten Umständen gültig sind.
Einschränkung von mysql_real_escape_string
Während mysql_real_escape_string Zeichenfolgendaten effektiv in Anführungszeichen maskiert, reicht es beim Umgang mit Dynamik nicht aus Tabellennamen. Die Escape-Funktion zielt nur auf Zeichen in Anführungszeichen ab und lässt das Backtick-Zeichen unverändert. Dieses Versehen schafft eine Lücke für Angreifer, um eine SQL-Injection auszuführen, indem sie einen schließenden Backtick in ihre Eingabe integrieren.
PDO-Beschränkung
Ähnlich wie mysql_real_escape_string bietet PDO keinen direkten Schutz gegen SQL-Injection mit dynamischen Tabellennamen.
Empfohlen Ansatz
Um das Risiko einer SQL-Injection bei der Verwendung dynamischer Tabellennamen zu verringern, wird dringend empfohlen, alternative Strategien anzuwenden:
Das obige ist der detaillierte Inhalt vonWie kann ich dynamische Tabellennamen in SQL sicher verwenden, um Injektionen zu verhindern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!