Pouvez-vous utiliser des noms de tables variables dans SQLite sans constructeurs de chaînes ?

Linda Hamilton
Libérer: 2024-11-08 18:15:02
original
987 Les gens l'ont consulté

Can You Use Variable Table Names in SQLite Without String Constructors?

Noms de tables variables dans SQLite sans constructeurs de chaînes

Dans SQLite, les noms de tables variables peuvent-ils être utilisés sans recourir à des constructeurs de chaînes vulnérables ?

Contexte

Envisagez un projet cataloguant des données de simulation dans une base de données SQLite. Pour améliorer l'efficacité et la flexibilité, des tableaux sont souhaités pour chaque étoile afin d'éviter d'interroger une grande table pour un petit sous-ensemble de données. Cependant, l'utilisation de constructeurs de chaînes pour les noms de tables est déconseillée en raison des risques d'injection SQL.

Question

Est-il possible d'utiliser une variable comme nom de table sans utiliser de constructeurs de chaînes , proche à :

cursor.execute("CREATE TABLE (?) (etc etc)", self.name)
Copier après la connexion

Réponse

Malheureusement, SQLite n'autorise pas la substitution de paramètres pour les noms de table.

Atténuation des injections SQL

Pour résoudre les problèmes d'injection SQL, envisagez d'implémenter une fonction pour nettoyer les noms de table avant use :

def sanitize_table_name(table_name):
    return ''.join(char for char in table_name if char.isalnum())
Copier après la connexion

Cette fonction nettoie les noms de table en supprimant les caractères spéciaux, tels que les ponctuations et les espaces, ce qui donne lieu à des chaînes alphanumériques.

Exemple d'utilisation

Pour utiliser le nom de table nettoyé :

sanitized_name = sanitize_table_name(self.name)
cursor.execute(f"CREATE TABLE StarFrame{sanitized_name} (etc etc)")
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal