写了一个js游戏,里面的变量涉及到速度等隐私数据,怎样写js可以保证不被开发者恶意修改?
3 回答
犯罪嫌疑人X
TA贡献2080条经验 获得超4个赞
一般情况下未暴露到全局的变量都很难被修改。你可以考虑大量使用闭包来封装数据。从服务器获取数据的代码和获得的数据放在一个闭包中也是改不了的……但是仍有两种情况可以修改
监听 Ajax 请求过程,可以使用某些工具直接修改 HTTP 的返回结果。虽然可以考虑对数据加密,但是由于解密程序在客户端而且没有编译成二进制,要解密并修改数据也还是可以做到的。
直接进入开发者工具,在源文件上打断点,也是可以修改的……
所以,实际上目前是没有比较安全的办法。以后 WebAssembly 广泛之后可能会好一点。
撒科打诨
TA贡献1934条经验 获得超2个赞
你在构建函数里写的变量如果不设在this
上,就无法在外面修改,如下:
class Vehicle {
constructor(type) {
this.type = type;
// private属性
let speed = 10;
this.getSpeed = () => speed;
}
}
const vehicle = new Vehicle('Test');
vehicle.type = 'Hello' //=> 没问题
vehicle.speed = 15; //=> 不会改构建函数里的`speed`
vehicle.getSpeed(); //=> 10
设在this
的属性都是public的,构建函数里的let
, var
和const
都无法在外面修改。
添加回答
举报
0/150
提交
取消