r4khic
@r4khic
Начинающий кодер на python

Как лучше защитить sql запрос от sql injection средствами python?

Добрый день всем ! Появилась задача: Защитить insert запрос от sql инъекции.
То есть защитить такой кусок кода:
self.cursor.execute('''INSERT INTO items (res_id, log_id, link, title, content, n_date, nd_date, s_date, not_date)
                       VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)''',
                       ( res_id,
                         log_id,
                         str(resource_link),
                         str(item_title),
                         str(item_content),
                         str(n_date),
                         nd_date,
                         s_date,
                         not_date
                       )
                                    )

Использую python 3.7 и библиотеку pymysql.
Mysql 5.7
Какие метода защиты посоветуете (желательно с примером) ? Или какую литературу ? Любая информация будет очень полезна мне.
UPD: Почитав как защищает pymysql здесь понял что у меня VALUES уже так экранирован и защищен.
  • Вопрос задан
  • 881 просмотр
Решения вопроса 2
TheRonCronix
@TheRonCronix
Вообще, если хотите сделать правильно, то нужно использовать связывание переменных с запросом (bind variables). Это:
1 - решает проблему sql-инъекции. 2 - способствует повышению производительности, т.к. запрос парсится в субд 1 раз и затем уже просто переиспользуется с новыми значениями переменных.
В статьях, которые вам подкинули про это есть. Это важно не только для python, но и вообще везде, поэтому стоит запомнить один раз. Используйте bind variables.
Ответ написан
Пожалуйста, не изобретайте велосипед.
Для начала задумайтесь, как происходит инъекция? Как зловредный код попадает в SQL-базу?
Затем подробнее прочитайте про WEB-фреймворки и ORM.
Например Django - очень развитый фреймворк в плане security и у него вполне пригодный ORM.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы