Javascript 如果用户使用inspect元素删除字段,如何防止表单提交

Javascript 如果用户使用inspect元素删除字段,如何防止表单提交,javascript,jquery,Javascript,Jquery,如果用户有意使用inspect元素删除字段,我想阻止表单提交。目前我正在使用jquery进行自定义验证。您可以通过ID或任何方法获取表单的每个字段,并在发送前与表单匹配。以下是文件: 但正确的方法是检查后端的表单数据。前端中的验证表单必须仅用于检查数据类型或琐事。 现实情况是,如果用户非常聪明地更改web文档,那么检查表单HTML是没有用的。处理验证的唯一安全方法是在后端也这样做,而不仅仅是在前端,正如评论中提到的那样,用户仍然可以欺骗您的前端代码来提交表单,无论如何,这里有一种防止表单提交的方

如果用户有意使用inspect元素删除字段,我想阻止表单提交。目前我正在使用jquery进行自定义验证。

您可以通过ID或任何方法获取表单的每个字段,并在发送前与表单匹配。以下是文件:

但正确的方法是检查后端的表单数据。前端中的验证表单必须仅用于检查数据类型或琐事。
现实情况是,如果用户非常聪明地更改web文档,那么检查表单HTML是没有用的。

处理验证的唯一安全方法是在后端也这样做,而不仅仅是在前端,正如评论中提到的那样,用户仍然可以欺骗您的前端代码来提交表单,无论如何,这里有一种防止表单提交的方法如果删除了一个元素,我将使用来观察
标记的子元素上的任何更改,并使用一个标志来防止表单提交,请注意,有一个计时器在4秒后运行以删除元素,您可以在4秒窗口之前提交表单:

var submitFlag=1;
函数回调(mutationList,observer){
mutationList.forEach((突变)=>{
开关(突变型){
“儿童名单”案例:
if(mutation.removedNodes.length){//在这里为表单元素添加条件
submitFlag=0;
}
打破
}
});
}
var targetNode=document.querySelector(“#someElement”);
var observer选项={
儿童名单:是的,
属性:正确,
子树:true//忽略或设置为false,以仅观察父节点的更改。
}
var observer=新的MutationObserver(回调);
observer.observe(targetNode、observer选项);
setTimeout(函数(){
document.getElementById('el2').remove();
}, 4000);
函数submitHandler(事件){
如果(submitFlag==1){
console.log('submitted');
}
否则{
event.preventDefault();
console.log(“无法提交”);
}
}

  • 要素1
  • 要素2
  • 要素3
  • 要素4
输入名称:
如果用户足够聪明,可以使用DevTools删除字段,他们也可以提交表单,您无法阻止它。在服务器上验证表单,并计算字段数,如果未发送所有字段,则拒绝。始终可以更改客户端。进行测试以防止提交,比如测试正确的值,但不要做得太过分。真正的预防发生在服务器上。有很多代码,用户可以简单地从表单标签中删除
onsubmit
属性,或者重写全局函数……是的,没错,这就是我在上面的回答中所说的,开发人员还应该为他们代码库中的所有端点实现后端验证。