绕过表单验证

Posted

技术标签:

【中文标题】绕过表单验证【英文标题】:Bypass Form Validation 【发布时间】:2019-01-20 17:12:44 【问题描述】:

我有一个带有单选按钮组的表单,我为其设置了验证逻辑,即在提交时必须选择组中的一个单选按钮。

但是,我在该表单上还有一个取消按钮,我已将其包装为超链接,如下所示:

<a href="@routes.MyController.index">
    <button>Cancel</button>
</a>

问题是当用户在没有选择单选按钮的情况下单击此取消按钮时(因为他们出于某种原因想要离开表单),验证逻辑会启动提示用户选择单选按钮选项。

单击取消按钮时如何绕过验证?

【问题讨论】:

【参考方案1】:

button 更改为div

<a href="@routes.MyController.index">
  <div>Cancel</div>
</a>

默认的type 属性是submit,因此它将表单发送到服务器并对其进行验证。在您的情况下,具有默认 submit 属性的 button 会捕获单击事件,因此 a 甚至不会命中。

如果您需要 button 标记,那么您需要使用以下 javascript 覆盖其行为:

<button type="button" onclick="window.location.href='@routes.MyController.index'">Cancel</button>

附:

它与 playframework 无关,它只是一个 html 行为。

【讨论】:

以上是关于绕过表单验证的主要内容,如果未能解决你的问题,请参考以下文章

java web 如何防止 用户绕过js验证,直接地址栏提交表单或自己编写html页面,提交数据到服务器?

如何提交表单并绕过 preventDefault

Jquery在可访问的多步骤表单上验证

表单正在提交空数据

Pikachu靶场通过记录

什么是表单验证?