PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

psycopg2 et sécurité des injections SQL

AsIs est dangereux, à moins que vous ne sachiez vraiment ce que vous faites. Vous pouvez l'utiliser pour des tests unitaires par exemple.

Passer des paramètres n'est pas si dangereux, tant que vous ne pré-formatez pas votre requête sql. Ne jamais faire :

sql_query = 'SELECT * FROM {}'.format(user_input)
cur.execute(sql_query)

Depuis user_input pourrait être ';DROP DATABASE;' par exemple.

À la place, faites :

sql_query = 'SELECT * FROM %s'
cur.execute(sql_query, (user_input,))

pyscopg2 va assainir votre requête. De plus, vous pouvez pré-assainir les paramètres de votre code avec votre propre logique, si vous ne faites vraiment pas confiance à l'entrée de votre utilisateur.

Par psycopg2 documentation de :

De plus, je ne laisserais jamais, au grand jamais, mes utilisateurs me dire quelle table je devrais interroger. La logique (ou les itinéraires) de votre application devrait vous le dire.

Concernant AsIs() , selon psycopg2 documentation de :

Donc, ne l'utilisez pas avec l'entrée de l'utilisateur.