Предотвращение SQL-инъекций в Python - достаточно ли использовать параметризованный запрос? - PullRequest
3 голосов
/ 22 марта 2011

У меня есть следующий код Python:

row = conn.execute('''SELECT admin FROM account WHERE password = ?''',
(request.headers.get('X-Admin-Pass'),)).fetchone()

Мой вопрос, является ли этот код безопасным для SQL-инъекций?Так как я использую параметризованный запрос, это должно быть.Однако, поскольку я передаю информацию о пользователях прямо из шапки, я немного волнуюсь:)

Есть какие-нибудь мысли по поводу проблемы?

Ответы [ 2 ]

2 голосов
/ 22 марта 2011

Способ, которым вы вставляете данные в базу данных, гарантирует, что атака SQL не будет работать, метод execute автоматически экранирует параметры, которые вы передали в качестве кортежа в качестве второго параметра запроса.

Вы делаете это правильно.

1 голос
/ 22 марта 2011

Если ваш модуль использует спецификации DBI , значит, вы хорошо параметрируетесь. Если вы не хотите проводить исследования по предотвращению конкретных атак SQL, параметризация ваших запросов является хорошим зонтиком против внедрения SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...