Как передать уязвимые аргументы из шаблонов в представления в Django? - PullRequest
0 голосов
/ 12 сентября 2011

Я создаю приложение, которое может создавать, редактировать или просматривать место.

Когда я редактирую или просматриваю место, я передаю поле 'id' через URL, например:

/ места / место / 1

/ места / место / 2 ...

Когда я пытаюсь отредактировать место, которое я делаю:

place_detail.html

<a href="{% url places_edit_place place.id %}">Edit</a>

var 'place' - это форма.

url.py

urlpatterns = patterns('',
    url(r'^edit_place/(?P<id_place>\w+)/$',
        views.edit_place,
        name='places_edit_place'),
    )

view.py

def edit_place(request, id_place, template_name='places/edit_place.html'):

Я получаю поле 'id' объекта place в аргументе 'id_place'. Но если я изменю в url аргумент 'id' (/ place / edit_place / 1 на / place / edit_place / 2), веб-страница перейдет на второе место для редактирования, и пользователь сможет изменить этот аргумент так, как он хочет.

Как я могу отправить этот приватный аргумент 'id' из шаблона в представление без просмотра пользователем.

1 Ответ

0 голосов
/ 13 сентября 2011

Не.

Если в вашем приложении есть правила, определяющие, какие места пользователь может редактировать, вам следует реализовать некоторую бизнес-логику, чтобы гарантировать, что пользователь не сможет редактировать это место, даже если оно произошло.перейдите по URL, чтобы сделать это.Вы можете использовать авторизаторские декораторы Django , чтобы гарантировать, что пользователь не сможет получить доступ к тому, что он не должен.

...