亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

寫了一個js游戲,里面的變量涉及到速度等隱私數據,怎樣寫js可以保證不被開發者惡意修改?

寫了一個js游戲,里面的變量涉及到速度等隱私數據,怎樣寫js可以保證不被開發者惡意修改?

慕仙森 2018-08-01 18:28:08
寫了一個js游戲,里面的變量涉及到速度等隱私數據,怎樣寫js可以保證不被開發者惡意修改?
查看完整描述

3 回答

?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

一般情況下未暴露到全局的變量都很難被修改。你可以考慮大量使用閉包來封裝數據。從服務器獲取數據的代碼和獲得的數據放在一個閉包中也是改不了的……但是仍有兩種情況可以修改

  • 監聽 Ajax 請求過程,可以使用某些工具直接修改 HTTP 的返回結果。雖然可以考慮對數據加密,但是由于解密程序在客戶端而且沒有編譯成二進制,要解密并修改數據也還是可以做到的。

  • 直接進入開發者工具,在源文件上打斷點,也是可以修改的……

所以,實際上目前是沒有比較安全的辦法。以后 WebAssembly 廣泛之后可能會好一點。


查看完整回答
反對 回復 2018-08-06
?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

可以考慮js混淆,搜索關鍵字【js混淆】【反爬蟲】,這樣客戶端比較難以找到你核心的數據。

查看完整回答
反對 回復 2018-08-06
?
撒科打諢

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的,構建函數里的letvarconst都無法在外面修改。


查看完整回答
反對 回復 2018-08-06
  • 3 回答
  • 0 關注
  • 1536 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號