【问题标题】:How to prevent users from tampering HTML Form in the browser?如何防止用户在浏览器中篡改 HTML 表单?
【发布时间】:2021-02-02 07:46:01
【问题描述】:

我的模板中有几个复选框,其值是数据库行的 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 forms django-forms django-views django-templates


【解决方案1】:

这取决于许多不同的事情,但要带你回到基础:当你创建一个函数以防止它出现任何错误时,你会使用类型和值检查。

我认为最好的方法是添加一些后端检查。返回的表单值必须遵守一组规则,例如值阈值。如果返回的值超出该阈值,则意味着 HTML 中的某些内容发生了变化。

如果失败,则添加一个检查,然后后端将返回错误。与前端协作,您刷新页面并返回错误消息。这可能是非常糟糕的用户体验,但普通的最终用户永远不会使用他们的检查器更改值。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-27
      • 2018-04-30
      • 2011-06-13
      • 1970-01-01
      • 2021-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多