Предотвращение инъекций RawSQL в Django

В моем Django приложении я использую RawSQL запросы в качестве дополнительного уровня безопасности, я хочу разобрать каждый RawSQL запрос, чтобы предотвратить операции удаления или обновления.

пример: Есть несколько автоматических заданий, запланированных из панели администратора django, которые используют запросы RawSQL во время выполнения. Мне нужен метод для добавления уровня проверки над выполнением rawsql, чтобы я мог предотвратить выполнение любых запросов на удаление, обновление и т.д.

Для предотвращения SQL-инъекций в Django при работе с базой данных всегда следует использовать параметризованные запросы. Это означает, что в SQL-запросах нужно использовать заполнители и передавать значения в виде отдельных параметров.

Например, вместо использования конкатенации строк для построения запроса:

cursor.execute("SELECT * FROM myapp_mymodel WHERE name='" + user_input + "'")

Вам следует использовать заполнители и передавать значения как отдельные параметры:

cursor.execute("SELECT * FROM myapp_mymodel WHERE name=%s", [user_input])

ORM в Django предоставляет высокоуровневый, питонический API для взаимодействия с базой данных. Он автоматически экранирует любые передаваемые ему значения, поэтому вам не нужно беспокоиться о SQL-инъекциях при использовании ORM.

Вы также должны убедиться, что никогда не используете конкатенацию строк или интерполяцию для построения необработанных SQL-запросов, поскольку это может открыть ваше приложение для атак SQL-инъекций. Вместо этого используйте API ORM для построения запросов, который предназначен для предотвращения SQL-инъекций.

Например, вместо использования необработанного SQL:

MyModel.objects.raw("SELECT * FROM myapp_mymodel WHERE name='" + user_input + "'")

Вам следует использовать API ORM для построения запросов:

MyModel.objects.filter(name=user_input)

Также хорошей практикой является проверка вводимых пользователем данных и ограничение набора результатов с помощью limit() и offset() для предотвращения получения больших данных злоумышленниками.

Вернуться на верх