Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erstelle ich sicher Tabellen mit dynamischen Namen in SQLite?

Wie erstelle ich sicher Tabellen mit dynamischen Namen in SQLite?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-09 02:54:02268Durchsuche

How to Safely Create Tables with Dynamic Names 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn