javascript闭包函数可以由用户更改吗
Can a javascript closure function be altered by a user?
我们有一个代码可以制作一些东西:
$(function(){
//websocket connection
//ajax requests
//other stuff
});
如果加载了代码,浏览器已经编译了它,那么用户可以更改此代码并用更改后的代码重新加载页面吗?
因为这个匿名jquery函数中的函数不能在浏览器控制台中执行,因此它们是不可访问的,问题是:有可能破解这种类型的代码吗?
用户只需将匿名函数(包括其中的代码)复制到控制台并运行即可。
基本上,您发送到客户端的任何和所有代码都可以访问、修改和运行。
在服务器端验证任何需要验证的内容。使用客户端验证只是为了让您的应用程序"更漂亮"。
例如,它可以很容易地复制到Google Chrome中的控制台,从那里进行更改和启动。用户可以很容易地在"源代码"选项卡中看到这个脚本。所以,是的,这是可能的。所以,如果它是用户看不到的函数,我建议不要在客户端使用Javascript或任何脚本语言。
我不知道你的问题是什么,但有几个建议。
- 永远不要相信用户,也不要相信来自客户端的任何东西。它可以很容易地操作始终检查数据服务器端。请检查字段的类型是否正确,尤其是在像PHP这样的语言中,不要使用整个POST数据,始终对其进行筛选
- 最小化代码并使用闭包这样可以减少用户对代码的更改
- 只允许用户访问他负责的部分,这样,如果他扰乱了你的代码,他就会被损坏
- 如果可以的话,请使用安全的cookie和https。检查CSRF和XSS,并使用安全的方法
你无法避免用户会随心所欲,但你可以让他只能触摸他的数据
相关文章:
- 在underscorejs模板中使用闭包
- setTimeout可以与闭包内的函数一起使用吗
- 附加到原型属性的Do函数没有闭包
- 使用闭包共享构造函数参数
- 使用Google闭包编译器包含一个Ecmascript 6类
- 从js引擎的角度来看闭包和构造函数是如何工作的
- for循环中的JavaScript闭包
- Javascript闭包-如何防止内存泄漏
- 子类访问父类's闭包变量
- 闭包如何具体化数据封装
- Javascript.闭包和dynamic'这'实际上具有约束力
- 构造函数函数闭包变量
- 闭包js框架-将ArrayBuffer转换为字符串
- 如何在Angularjs中重构闭包中的重复代码
- 如何告诉闭包javascript编译器不要混淆webkitAudioContext的方法名称
- Google闭包和生成的getters/ssetter
- 如何冻结函数's在闭包中的变量
- 如何使用外部Javascript库(如jQuery)重命名Google闭包样式表
- 使变量可用于不带闭包的异步调用
- javascript闭包函数可以由用户更改吗