Variablentabellenname in SQLite
In SQLite kann es vorkommen, dass Sie dynamisch eine Tabelle mit einem darin gespeicherten Namen erstellen müssen eine Variable. Obwohl es üblich ist, für diesen Zweck String-Konstruktoren zu verwenden, bestehen aufgrund der Möglichkeit von SQL-Injection-Angriffen Sicherheitsbedenken.
Leider erlaubt SQLite keine Parameterersetzung für Tabellennamen. Best Practices schreiben jedoch die Verwendung einer Parametersubstitution zum Schutz vor Injektionsangriffen vor.
Alternative Lösung: Scrubbing der Variablen
Da Tabellennamen nicht direkt parametrisiert werden können, a Eine praktikable Lösung besteht darin, die Variable mit dem Tabellennamen zu bereinigen, bevor sie an die CREATE TABLE-Anweisung übergeben wird.
Sie können eine Funktion erstellen, die die Variable bereinigt, indem alle Zeichen außer alphanumerischen entfernt werden. Die folgende Python-Funktion entfernt beispielsweise Satzzeichen, Leerzeichen und andere nicht alphanumerische Zeichen:
def scrub(table_name): return ''.join( chr for chr in table_name if chr.isalnum() ) scrub('); drop tables --') # returns 'droptables'
Mit dieser Funktion können Sie die Tabelle mit einem variablen Tabellennamen erstellen und so sicherstellen, dass schädliche Zeichen entfernt werden , Injektionsattacken vorbeugen:
table_name = 'StarFrame' + self.name cursor.execute('CREATE TABLE {} (etc etc)'.format(scrub(table_name)))
Das obige ist der detaillierte Inhalt vonWie erstelle ich sicher Tabellen mit dynamischen Namen in SQLite?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!