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