django - разрешает ли произвольный ввод данных пользователем в filter () - это безопасно? - PullRequest
0 голосов
/ 29 ноября 2010

Насколько я знаю (я недостаточно глубоко изучил исходный код администратора django, чтобы понять) Администратор Django переводит параметры запроса GET непосредственно в условия фильтра запросов.

Мне было интересно,достаточно ли безопасен этот подход для использования в приложении, ориентированном на пользователя?У меня есть список данных, который должен принимать произвольные предложения WHERE, и я собираюсь реализовать его путем преобразования параметров GET в словарь, чтобы их можно было передать в метод filter () набора запросов.

Ответы [ 2 ]

3 голосов
/ 29 ноября 2010

Да.

Входные данные будут экранированы, поэтому не может быть никаких атак SQL-инъекций или чего-либо подобного.Однако ввод может быть недействительным для поля (полей), которые вы ищете.Или это может вообще не иметь никакого смысла, поэтому рекомендуется выполнить некоторую форму проверки (например, дата ввода должна быть больше другой даты, значение ввода должно быть меньше X и т. Д.)* Однако, если вы хотите отобразить данные, которые вы получили от пользователя, как часть страницы, вам необходимо убедиться, что вы их правильно экранировали. Документация по тегу autoescape

0 голосов
/ 24 декабря 2010

Я думаю, что правильный ответ «Нет, это не безопасно»

http://www.djangoproject.com/weblog/2010/dec/22/security/

Django только что выпустил исправления безопасности для 1.2.4 и 1.3b1, не позволяющие пользователям создавать фильтр произвольных запросов,При достаточном знании базовой модели данных и использовании регулярных выражений можно извлечь произвольную информацию, такую ​​как хеш пароля пользователя.

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