鍍金池/ 問答/PHP  數(shù)據(jù)庫(kù)  HTML/ 如何防止用戶攔截?cái)?shù)據(jù)包并修改數(shù)據(jù)后提交

如何防止用戶攔截?cái)?shù)據(jù)包并修改數(shù)據(jù)后提交

我有一個(gè)活動(dòng)頁(yè)面,canvas做的單機(jī)游戲,只在最后提交分?jǐn)?shù)時(shí)與服務(wù)端交互。今天出現(xiàn)了一條可疑數(shù)據(jù),疑似被抓包修改了成績(jī)。想知道有什么方法可以解決這種問題。

12-21 更新:
謝謝大家的回答。暫時(shí)看來是沒有什么方法能從根源上解決。那有什么方法可以對(duì)用戶提交的數(shù)據(jù)做合法性驗(yàn)證呢?(就是一個(gè)canvas游戲,分?jǐn)?shù)是通過幀數(shù)來計(jì)算的,用戶操作就是點(diǎn)點(diǎn)點(diǎn)。

回答
編輯回答
護(hù)她命

不知道是否可以考慮使用websocket wss協(xié)議進(jìn)行長(zhǎng)連接監(jiān)聽提交數(shù)據(jù)

2017年7月15日 00:35
編輯回答
涼汐

不讓人改不現(xiàn)實(shí): JS是在別人機(jī)器上運(yùn)行的. 可以考慮一下如果被人改了, 你有什么方法可以驗(yàn)證.

2017年9月2日 17:38
編輯回答
耍太極

前端加密、提交都是不可信任數(shù)據(jù)!與其思考如何如何攔截一次性的非法請(qǐng)求,不如換個(gè)思路改一下分?jǐn)?shù)生成的方法。比如這樣做:用戶在整個(gè)游戲的過程中的操作行為、得到的分?jǐn)?shù)、截止當(dāng)前的分?jǐn)?shù),加密存儲(chǔ)在本地,最后將一整串的數(shù)據(jù)全部提交服務(wù)端,由服務(wù)端進(jìn)行最終成績(jī)計(jì)算。

2017年11月24日 04:30
編輯回答
心癌

前端加密其實(shí)不靠譜的,因?yàn)閯e人能看到你的加密算法 和 加密密鑰 ,直接拿到加密的函數(shù) js文件等等。

2018年3月21日 21:35
編輯回答
舊城人

前端加密這種,相當(dāng)于是透明的。js代碼都能看到。。。

2017年4月17日 10:01
編輯回答
解夏

可以參考人機(jī)驗(yàn)證,由程序提交的數(shù)據(jù),會(huì)呈現(xiàn)出一定的規(guī)律性。比如每次按鍵、點(diǎn)擊等操作時(shí)間間距都一致。

其實(shí)吧,你都肉眼看出數(shù)據(jù)不符合正常邏輯了,那么按照你的邏輯,后端加點(diǎn)代碼檢驗(yàn)提交的數(shù)據(jù)不得了。

2018年1月21日 09:04
編輯回答
蝶戀花

對(duì)提交的數(shù)據(jù)進(jìn)行 sign驗(yàn)簽 驗(yàn)簽的算法用 RSA

2018年1月6日 23:05
編輯回答
獨(dú)特范

對(duì)這種數(shù)據(jù),前端加密是無意義、無效果的。
整體的思路還是要增加中間提交交互信息,后端計(jì)算成績(jī)。
就是這樣都不能完全防止外掛的,因?yàn)橥鈷煨畔⑹窃诳蛻舳水a(chǎn)生的,只是操作換成了機(jī)器根據(jù)算法計(jì)算的。

2018年9月22日 07:01
編輯回答
默念

并不能。

2018年6月19日 12:16
編輯回答
尐懶貓

簽名發(fā)送,實(shí)在不行就ajax全程交互

2017年11月16日 16:09