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
документация на
:
Така че не го използвайте с въвеждането на потребителя.