2017-10-10 90 views
0

我的fiddle我有一个例子,应该只允许用户点击提交通过将提交按钮元素禁用为false基于一些计算出来的JavaScript。如何避免篡改JavaScript/HTML元素

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?

+0

我不是专家,但我可以想象这种保护需要在服务器端实现。 – freginold

+1

服务器端验证 –

回答

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

  2. 从来没有完全可以停止开发工具被加载,但是你可以通过禁用F12按钮和上下文菜单,,但这是你不想走的路。

  3. 使用被缩小的代码,所以阅读和理解以及篡改使用开发工具或其他嗅探器变得更加困难。

summerized:利用精缩(混淆)码结合在客户端和服务器(数据库上优选太)上健全性检查。

+0

很高兴知道,不幸的是,第三方(亚马逊土耳其人)托管提交将被发送到的服务器,所以即使我使用信息ping自己的服务器,它也不会阻止某人点击提交。 –

+0

您仍然可以将这些发布到您的服务器,并在php中使用卷曲来获得结果。 – Mouser

5

简短的回答:你不能

龙答:每个人都可以发送任何东西到你的服务器。因此,安全地过滤和检查用户输入的唯一方法是在服务器端只

对不起

1

据我所知,你不能隐藏javascript代码给用户。见this

实现混淆的低级方法是缩小JavaScript文件,因为大多数用户不会打扰跟踪单个字母的命名变量等。

+2

这不是全部关于JavaScript,您可以在不查看代码的情况下操纵DOM(例如启用按钮)。 – Lyth