如何将易受攻击的args从模板传递到Django中的视图?

时间:2011-09-12 15:43:11

标签: django django-templates django-forms django-views

我正在创建一个可以创建,编辑或查看地点的应用。

当我编辑或查看某个地点时,我会通过该网址传递“id”字段,例如:

/地点/位置/ 1

/地点/位置/ 2 ...

当我尝试编辑我所做的地方时:

place_detail.html

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

'place'var是一种形式。

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'arg中收到了一个place对象的'id'字段。但是如果我在网址中更改'id'arg(/ places / edit_place / 1到/ places / edit_place / 2),网页将转到第二个要编辑的位置,用户可以按照自己的意愿更改此arg。

如何在模板中将此私有'id'arg发送到视图而不会让用户看不到它。

1 个答案:

答案 0 :(得分:0)

别。

如果您的应用程序有规则来确定用户可以编辑哪些位置,您应该实现一些业务逻辑,以确保用户无法编辑该位置,即使他们恰好使用URL来执行此操作。您可以使用Django的authorization decorators来确保用户无法访问他们不应该访问的任何内容。