Heim >Backend-Entwicklung >Python-Tutorial >Wie erstelle ich sicher Tabellen mit dynamischen Namen in SQLite?
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!