【问题标题】:How to pass vulnerable args from templates to views in Django?如何将易受攻击的参数从模板传递到 Django 中的视图?
【发布时间】:2011-09-12 15:43:10
【问题描述】:

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

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

/places/place/1

/places/place/2 ...

当我尝试编辑地点时:

place_detail.html

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

'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' 字段。但是,如果我在 url 中更改 'id' arg(/places/edit_place/1 到 /places/edit_place/2),则网页会转到要编辑的第二个位置,并且用户可以根据需要更改此 arg。

如何在用户看不到的情况下将这个私有“id”参数从模板发送到视图。

【问题讨论】:

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


    【解决方案1】:

    不要。

    如果您的应用具有确定用户可以编辑哪些位置的规则,则您应该实施一些业务逻辑以确保用户无法编辑该位置,即使他们碰巧通过 URL 进行了编辑。您可以使用 Django 的authorization decorators 来确保用户无法访问他们不应该访问的任何内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-05
      • 1970-01-01
      • 2020-12-11
      • 1970-01-01
      • 2018-02-03
      • 1970-01-01
      • 2020-03-19
      • 2019-02-16
      相关资源
      最近更新 更多