use*_*942 2 javascript console google-chrome javascript-security
所以,我今天刚才注意到你可以在Chrome控制台中运行javascript.我不知道你能做到这一点.这真的很酷.
在我的rails应用程序中,我有一个外部JavaScript页面.我希望该页面上的一些变量是全局的,以便JS文件中的所有函数都可以访问它们.例如,我有一个地图,我希望地图对象在javascript文件中是全局的,因为这样我所有的函数都可以访问一个地图变量而不是创建自己的地图变量,我可以将复杂的操作分解为更小的函数.
这一切都很好,我知道如何做到这一点,它的工作完美.我现在的问题是,我可以保护外部的变量吗?例如,您可以从chrome控制台更改所有javascript类变量的值.以及例如地图中的方法是可访问且可以进行的.我已将地图设置锁定在其中一个页面上,因此它不可缩放或可移动,但从控制台我可以简单地说map.setZoom(11),地图将缩放到11 ..我可以键入map.dragable = true和bam你可以拖动地图..我真的不喜欢这个..
它不是太糟糕,但用户启用地图拖动和缩放不是世界上最糟糕的事情..但我仍然想禁用它.有任何想法吗?
编辑
谢谢大家的回答和评论.我想我只会诉诸于不把任何可以被恶意转化为我的javascript的东西,并做一些事情,比如将我的地图变量传递给必要的功能以减慢人们的速度.
您可以使用立即调用的函数(IIFE)表达式来防止变量和函数在全局范围中公开:
var a = 10;
(function() {
var b = 20;
})();
Run Code Online (Sandbox Code Playgroud)
window.a让你查看和修改a,但你不能这样做b:

我更确定有一种方法可以b使用Inspector 进行编辑,但我没有花时间去弄清楚它.不要浪费时间试图阻止用户修改他们可以查看的代码.
你不能。即使您将它们包装到匿名函数中,用户也可以通过调试器访问它们。作为最后的手段,他可以简单地拦截你到他自己机器的流量并用其他东西替换你的 JavaScript。
底线:浏览器中的 JavaScript 是客户端的。客户可以随心所欲地使用它。
| 归档时间: |
|
| 查看次数: |
6709 次 |
| 最近记录: |