PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

psycopg2 и сигурност на SQL инжектиране

AsIs не е безопасно, освен ако наистина не знаете какво правите. Можете да го използвате например за тестване на единици.

Предаването на параметри не е толкова опасно, стига да не форматирате предварително своята sql заявка. Никога не правете:

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

Тъй като user_input може да бъде ';DROP DATABASE;' например.

Вместо това направете:

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

pyscopg2 ще дезинфекцира вашата заявка. Освен това можете предварително да дезинфекцирате параметрите във вашия код с вашата собствена логика, ако наистина не вярвате на въведеното от вашия потребител.

Според psycopg2 документация на :

Също така, никога, никога не бих позволил на моите потребители да ми казват към коя таблица трябва да направя заявка. Логиката (или маршрутите) на вашето приложение трябва да ви каже това.

Относно AsIs() , според psycopg2 документация на :

Така че не го използвайте с въвеждането на потребителя.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получите вчерашната дата в PostgreSQL

  2. Създаване на релационни връзки в PostgreSQL чрез pgAdmin

  3. Как make_time() работи в PostgreSQL

  4. SQL заявка за намиране на ред с определен брой асоциации

  5. postgresql createdb и CREATE DATABASE дават непразна база данни. каква вилица?