我尝试禁止用户使用开发人员工具(如Firebug)更改我的javascript变量
我的脚本如此简单......
var a = 1;
$('button').on('click',function(){
$('div').html(a);
});
我的网站允许通过Firebug更改变量,为什么?
在我对Fiddle(http://jsfiddle.net/RjQTp/)做了一个演示之后,我只想知道为什么Fiddle CANT 通过Firebug改变变量。
有人可以告诉我...
答案 0 :(得分:3)
Javascript在客户端上运行,许多浏览器允许您更改javascripts,而不仅仅是变量值,还可以插入或删除行等......
出于这个原因,您应该始终清理服务器端的传入数据,即使它来自您自己的网站。 通常,您应该只考虑使用javascript来改善UI和用户体验,但绝不能将其作为验证,保护页面或执行重要业务逻辑的手段。
There are some handy functions included in PHP for handling variable validation
答案 1 :(得分:1)
他们可以改变它,因为它在他们的系统上运行,并且有规则。
反击的唯一方法是使用正在运行的脚本测试更改。
我使用了一个系统,它声明了每个变量三次,每次测试我的变量两次,以便更改任何一组。然后它会改变并且差异回到另外两个。
但是......他们仍然可以用他们的开发工具打破我的反作弊脚本。
答案 2 :(得分:1)
Object.defineProperty(window,'a',{
value: "test",
enumerable: true
});
我认为,上面的代码可能会让我无法改变,至少对我这个级别的任何人来说都是如此。我刚刚在一个月前了解了这些东西。你知道早期的javascript。解决这个问题的唯一方法是删除窗口对象,但如果这样做,则删除所有内容。如果你能做到这一点。