如何避免篡改javascript/HTML元素

如何避免篡改javascript/HTML元素,javascript,html,security,Javascript,Html,Security,在我的示例中,我有一个示例,该示例应该只允许用户通过根据一些计算出的javascript将submit button元素disabled设置为false来单击submit function enable(TVD) { if (TVD[TVD.length - 1] >= trueTVD - 5 && TVD[TVD.length - 1] <= trueTVD + 5) { //console.log(TVD[TVD.length - 1]);

在我的示例中,我有一个示例,该示例应该只允许用户通过根据一些计算出的javascript将submit button元素disabled设置为false来单击submit

  function enable(TVD) {
    if (TVD[TVD.length - 1] >= trueTVD - 5 && TVD[TVD.length - 1] <= trueTVD + 5) {
      //console.log(TVD[TVD.length - 1]);
      $('#submitButton').prop("disabled", false);
    } else {
      $('#submitButton').prop("disabled", true);
    }
  }
发生的事情是,我发现一些用户可能通过使用开发工具之类的工具绕过了这个问题


我想这样设计,我的安全不能被绕过。我如何实现这一目标,或者如何对开发工具隐藏javascript?

简短回答:你不能

详细回答:每个人都可以向您的服务器发送任何内容。因此,安全过滤和检查用户输入的唯一方法是仅在服务器端


抱歉,您不能向用户隐藏javascript代码。看

实现模糊处理的一种低级方法是缩小javascript文件,因为大多数用户都不会费心跟踪单个字母命名的变量等

最好的方法是在服务器上进行验证。永远不要相信来自客户的任何东西。它可能被篡改

永远不可能完全停止加载dev工具,但是禁用F12按钮和上下文菜单会使加载变得困难,但这是一条你不想走的路

使用缩小的代码,这样就更难阅读和理解,也更难使用开发工具或其他嗅探器进行篡改

summerized:在客户端和服务器上使用精简的模糊代码,最好在数据库上使用


我不是专家,但我认为这种保护需要在服务器端实现。服务器端验证这并不全是关于javascript的,你可以操纵DOM,例如启用按钮而不查看代码。很高兴知道,不幸的是,第三方Amazon Turk托管了提交将发送到的服务器,因此,即使我用信息ping我自己的服务器,也不会阻止某人单击提交。不过,您可以将这些信息发布到服务器上,并使用php中的curl来获得结果。