Maison >base de données >tutoriel mysql >Comment puis-je transmettre en toute sécurité les noms de tables en tant que paramètres dans Psycopg2 ?

Comment puis-je transmettre en toute sécurité les noms de tables en tant que paramètres dans Psycopg2 ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-12 11:07:43603parcourir

How Can I Safely Pass Table Names as Parameters in Psycopg2?

Transmettez en toute sécurité le nom de la table comme argument dans Psycopg2

Dans psycopg2, il est fortement déconseillé d'utiliser la concaténation de chaînes (« select %s from %swhere... ») pour passer le nom de la table en paramètre, car cela présente un risque de sécurité. Pensez plutôt à utiliser le module psycopg2.sql, plus sûr.

Le module sql ajouté dans psycopg2 version 2.7 fournit un moyen de générer dynamiquement des requêtes SQL lors de la sélection dynamique des noms de tables. Voici un exemple :

<code class="language-python">from psycopg2 import sql

cur.execute(
    sql.SQL("insert into {table} values (%s, %s)").format(table=sql.Identifier('my_table')),
    [10, 20]
)</code>

Pour représenter les noms de tables ou de champs, veuillez utiliser Identifier au lieu de AsIs. Pour des raisons de sécurité, évitez d'utiliser la concaténation de chaînes Python ou l'interpolation d'arguments de chaîne.

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!

Déclaration:
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