Django形式:安全问题

时间:2015-09-02 11:28:33

标签: django django-forms

我有两种观点:myview和view-2。

view-two加载两个值(manie和pablo)并将其发送到模板:

def view-two(request):
    manie = ObjectUno.objects.all().count()
    pablo = ObjectDos.objects.all().count()
    ...
    return render(request,"website/maniePablo.html",locals())

在maniePablo.html中,我实现了一个将这两个值发送到名为“myview”的其他视图的过程:

<form hidden method="POST" action="{% url 'myview' %}" id="myform">
    {% csrf_token %}
    <input value="{{pablo}}" name="pablo">
    <input value="{{manie}}" name="manie">
</form>
<a onclick="$('#myform').submit();" id="BTNmesp" class="btn btn-success" role="button"> XXX </a>

点击btn XXX,我的视图“myview”会得到以下两个值:

def myview(request) : 
    ...
    if "pablo" in request.POST :
        nbpablo = request.POST["pablo"]
        nbmanie = request.POST["manie"]
    ...

通过这个过程: - 我可以将值发送到我的视图,而不是在url中显示这些值(例如:localhost:8000 / nameofurl / manie / pablo ...)。 - myview也没有加载像view-two(省电)

这些值

但我想知道这个过程是否良好以及是否会导致安全问题?

如果不是一个好的解决方案,我将使用ajax ...

3 个答案:

答案 0 :(得分:0)

除非您计划构建除了发布内容之外什么都不做的网站和应用程序,并且不接受访问者的输入,否则您将需要理解和使用表单。

Django提供了一系列工具和库来帮助您构建表单以接受来自站点访问者的输入,然后处理和响应输入。

https://docs.djangoproject.com/en/1.8/topics/forms/#more-about-django-form-classes

和Validators https://docs.djangoproject.com/en/1.8/ref/forms/validation/

答案 1 :(得分:0)

这绝不是安全的。任何人都可以通过查看页面源来查看这些值,并在提交之前通过浏览器中的开发人员工具进行更改。

我会质疑为什么你需要提供它们。他们首先来自服务器,你直接发布它们;重点是什么?您可以更容易地在处理帖子的代码中直接在服务器上获取它们。

答案 2 :(得分:0)

一个简短的答案:如果不想在url中显示信息,请使用django会话,然后在后端检查request.session中的值是否相同

https://docs.djangoproject.com/en/2.2/topics/http/sessions/