Разоблачение админа django пользователям. Вредно? - PullRequest
10 голосов
/ 21 мая 2011

Я работаю над проектом электронной коммерции в Django, где, вкратце, у меня есть модель Customer и Merchant.Модель Merchant связана с моделью MerchantStore, которая как-то «сложна», имея множество m2m и взаимосвязей внешних ключей для различных моделей.

Следуя решению в этой публикации и не имеяДостаточно «времени», чтобы сделать собственную реализацию, я решил позволить каждому Продавцу быть «членом команды» и настраивать свой магазин через интерфейс администратора.Конечно, я создал новую группу с соответствующими разрешениями.

Однако возникают некоторые вопросы:

1) Это считается вредным?Существуют ли какие-либо угрозы безопасности?

2) Разве это не лучший способ сделать это, если у вас все равно мало времени?

Ответы [ 2 ]

9 голосов
/ 22 мая 2011

Нет, я не считаю это вредным.

«Zen of Admin», как описано в djangobook от Apress, казалось, предполагал доверие как часть «философии» администратора, и в сочетании с часто повторяющимся советом «admin is your app», я тоже был напуган сначала подумайте, что в документации Django могут быть указаны предполагаемые, жизнеспособные варианты использования.

Пожалуйста, посмотрите мой почти идентичный вопрос Django AdminSite / ModelAdmin для конечных пользователей?

Из ответа Джордана (которому я дал награду):

В этом нет ничего особенного об админе Он ведет себя так же, как любой другой взгляд. Так что, если он использует разрешения для определения доступа (для Например, если вы установите .is_staff пользователя Правда, но дать им доступ только к конкретные разрешения) тогда будет одинаково безопасны для любого взгляда создать, который использует разрешения на определить доступ.

...

Люди, которые написали django.contrib.admin не написал это с предположением, что любой с is_staff = True можно доверять как как суперпользователь, или был глуп достаточно, чтобы никогда не взглянуть на исходный код веб-страницы. Хотя написание ваших собственных взглядов приветствуется, это все еще надежный интерфейс.

Также обратите внимание на относительно недавнее обновление безопасности Django http://www.djangoproject.com/weblog/2010/dec/22/security/ относительно параметров строки запроса в списках объектов.

Такое обновление (цитата: «злоумышленник с доступом к администратору [...]») является четким свидетельством того, что реализация системы разрешений администратором постоянно изучается.

6 голосов
/ 21 мая 2011

Да, это считается «вредным», в основном из-за конструктивных соображений разработчиков Django. Администратор вращается вокруг концепции «доверенных пользователей». Другими словами, если кто-то является сотрудником (тем самым имеет доступ к администратору), он, по-видимому, достаточно доверяет вам, чтобы не беспокоиться о нарушениях безопасности. По правде говоря, вы могли бы заблокировать их от частей, с которыми они не должны связываться (как вы сделали), но дело в том, что Django не дает никаких гарантий в этой области. Скорее всего, у вас не будет никаких проблем, но вы могли бы .

По иронии судьбы, я думаю, что провел больше времени в своей жизни, настраивая администратора Django, чем потребовалось бы мне, чтобы создать его с нуля. Забавно, как это происходит. Несмотря на это, я бы сравнил это с использованием скаффолдинга в Ruby on Rails. Это быстрый способ получить что-то живое, но цель состоит в том, чтобы заменить это как можно скорее.

...