Maison > développement back-end > Tutoriel Python > Comment créer des tables dynamiques dans SQLite en toute sécurité ?

Comment créer des tables dynamiques dans SQLite en toute sécurité ?

Susan Sarandon
Libérer: 2024-11-09 12:45:02
original
1009 Les gens l'ont consulté

How to Create Dynamic Tables in SQLite Safely?

Création de tables dynamiques dans SQLite

Dans la gestion de bases de données, la flexibilité et l'efficacité sont primordiales. Lorsqu'on travaille avec SQLite, la question se pose : peut-on utiliser des noms de tables variables sans recourir à des constructeurs de chaînes, une pratique sensible aux attaques par injection SQL ?

Dans ce cas, le but est de créer une table pour chaque étoile dans une simulation d'étoile. Chaque table doit être nommée en fonction du nom de la star. Dans un premier temps, l'approche consiste à utiliser des constructeurs de chaînes :

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

Cependant, ce n'est pas idéal. Pour résoudre le problème, on peut envisager d'utiliser des paramètres :

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

Malheureusement, les tableaux ne peuvent pas être la cible d'une substitution de paramètres. Par conséquent, cette approche n’est pas réalisable.

Au lieu de cela, pour assurer la protection contre les attaques par injection, une fonction de désinfection peut être utilisée. Cette fonction filtre les caractères spéciaux et garantit que le nom de la table ne contient que des caractères alphanumériques :

def scrub(table_name):
    return ''.join( chr for chr in table_name if chr.isalnum() )

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

Cette approche permet la création dynamique de tables tout en se protégeant contre les menaces de sécurité. En supprimant les vecteurs d'injection potentiels, il maintient l'intégrité de la base de données et empêche les acteurs malveillants d'exploiter l'application.

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