如何防止用户在浏览器中篡改HTML表单?

如何防止用户在浏览器中篡改HTML表单?,html,forms,django-forms,django-views,django-templates,Html,Forms,Django Forms,Django Views,Django Templates,我的模板中有几个复选框,其值是数据库行的id。我使用AJAX来回发布这些值 {% for item in sale_order_items %} <tr> <td class="text-center"> <input type="checkbox" name="saleorderitem" value="{{item.id}}"> </td&

我的模板中有几个复选框,其值是数据库行的id。我使用AJAX来回发布这些值

{% for item in sale_order_items %}
<tr>
    <td class="text-center">
        <input type="checkbox" name="saleorderitem" value="{{item.id}}">
    </td>
</tr>
{%用于销售订单中的商品\商品%}

实例的item.id呈现为1。现在,如果用户在浏览器中使用“inspect”将值从1更改为2并提交表单,该怎么办。在前端或django后端,我可以做些什么来防止出现这种情况,并检查用户是否提交了与预期相同的值?

这取决于许多不同的事情,但要让您回到基本点:当您创建一个函数以防任何错误时,您使用类型和值检查

我认为最好的方法是添加一些后端检查。返回的表单值必须遵守一组规则,例如值阈值。如果返回的值超出该阈值,则表示HTML中发生了更改

如果检查失败,那么后端将返回一个错误。与前端协同刷新页面并返回错误消息。这可能真的很糟糕,但是一个普通的终端用户永远不会使用他们的检查器更改值


另一种选择是使用javascript来检测任何类型的HTML/DOM突变或更改,我建议不要这样做。根据特定条件(使用后端)检查值是最好的,因为它可以防止信息传递到服务器,以防任何更改。

我找到了一个解决方案,在这种情况下,django会话变量可用于在请求之间存储数据。当我加载表单时,我将会话变量设置为所需的值,然后在表单提交时,我用会话变量中的值检查提交的值。而且很有效。

也许这对你有帮助