全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

如何破坏客户端表单验证

发布时间:2022-09-22 16:38:19
发布人:syq

  在将表单提交到服务器之前,默认的浏览器行为是检查所有必填字段是否存在且格式是否正确。这称为客户端表单验证。但是,很容易无意中禁用此有用的浏览器行为。

如何破坏客户端表单验证

  对用户体验的影响

  首先,我们在这里谈论的是用户体验问题,而不是安全问题。提交表单后,必须在服务器端对其进行验证。这可确保只有正确的数据才能进入数据库。因此,虽然客户端表单验证不应涉及应用程序的安全性,但它对于良好的用户体验非常重要。您希望向用户提供有关输入数据是否“已准备好提交”的即时反馈。如果没有客户端验证,用户必须等到响应从服务器返回,并在等待后调整数据。

  浏览器检查的内容

  虽然您可以在 JavaScript 中构建额外的检查,但以下是浏览器将自动执行的内置检查:

  输入类型检查

  每当您为输入字段指定类型时,浏览器都会检查用户输入是否与表单提交中的该类型匹配。更具体地说,当您提交表单并且您的输入不匹配时,浏览器会通知您,并且在您修复表单之前不会提交表单。

1

  检查必填字段是否存在

  每当输入字段具有必需属性时,就会检查其是否存在。

2

  您可以使用更多用于客户端输入验证的内置功能。

  现在,我们回顾了浏览器出色的验证功能,让我们来看看它是如何在意外中被破坏的,以及如何缓解这种情况。

  使用表单属性破坏表单验证

  从HTML5开始,您可以使用表单外部的按钮来提交表单。为此,您必须为按钮提供具有表单 ID 值的表单属性。

3

  这将提交表单,即使按钮位于表单之外。虽然可以做到这一点,但它跳过了浏览器的本机输入检查功能。

  使用 JS 提交函数破坏表单验证

  如果表单是通过 JS 提交函数提交的,则跳过所有输入检查。

  form.submit();

  如何缓解

  非 JS 方法:使用标准表单标记

  将按钮保留在表单内并通过用户直接单击提交表单,表单将自动验证

4

  2.JS方法:使用HTML格式元素报告有效性()

  您可以通过在窗体上调用该方法来使用内置的浏览器验证。在验证输入后使用 JavaScript 方法。reportValiditysubmit

  截至发布日期,此方法在除 IE 之外的所有浏览器中都可用。

  还有另一种类似的方法:。但是,它在Safari中尚不受支持(当然还有IE)。使用该方法,您可以立即请求提交表单,并在提交之前进行验证。它就像单击提交按钮(在表单内部)时发生的默认行为一样。requestSubmit requestSubmit

6

  您可以在此处检查实现状态,但现在,在JS表单提交时,您应该坚持使用和方法。reportValiditysubmit

  您可以通过在提交表单之前验证客户端的输入来改善用户体验。请注意,因为浏览器的默认验证行为很容易被拆除。

  避免在表单外部使用按钮,但如果这样做,请仅在调用表单后使用 JavaScript 提交表单。reportValidity

相关文章

深度学习模型权重h5、weights、ckpt、pth有什么区别?

深度学习模型权重h5、weights、ckpt、pth有什么区别?

2023-10-15
机器学习中Inference和predict的区别是什么?

机器学习中Inference和predict的区别是什么?

2023-10-15
kd-tree和ball-tree在算法实现原理上有什么区别?

kd-tree和ball-tree在算法实现原理上有什么区别?

2023-10-15
nn.Linear()和nn.Embedding()有什么区别?

nn.Linear()和nn.Embedding()有什么区别?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取