2012-11-21 13 views
3

我想編寫一個小遊戲,用戶必須在給定時間點擊出現的元素/對象。詳細地說,物體出現在地上的孔中,在x秒後物體消失。遊戲者的生命和所有的點擊次數都會被計算,直到他輸掉比賽。 之後,他的高分被髮布到數據庫(通過表單發佈或AJAX)。長話短說如何避免用戶在發送前僞造他的高分?程序語言是JS。使JS代碼不可讀/繁重到「破解」

我知道它不可能隱藏所有的代碼,並使其不可破解。但是我認爲,如果代碼太困難以至於用戶必須做大量的工作來了解他必須干預發送僞造的數據,那就足夠了。

有沒有人有一些想法如何使代碼儘可能困難?

在此先感謝您的任何想法:)

+1

可能的重複[如何混淆JavaScript?](http://stackoverflow.com/questions/194397/how-can-i-obfuscate-javascript) –

+0

您無法混淆足以執行此操作的JavaScript;網絡請求可以被分析和僞造太容易。如果你夢想一段時間,你可能會想出一種方法來驗證高分。 –

+0

[Garbled circuits](http://crypto.cs.uiuc.edu/wiki/index.php/Yao's_garbled_circuit)允許兩臺機器執行相同的計算,而不會泄漏太多的信息給另一臺機器。您可以使用它來確保點擊次數得到計算,而不會泄露過多的遊戲狀態,但對於Javascript遊戲來說,它可能過於尖端。其他現有的SO問題涉及JS混淆器的狀態。 –

回答

0

你應該從來沒有真正嘗試讓你的源代碼不可讀。對任何修改它的人來說,它都會讓你頭疼。這就是說,你可以重構所有的變量名來完成亂碼和空白,但任何認真試圖理解你的代碼的人都可以在一個體面的文本編輯器中恢復它。爲了使它更加複雜,將會降低程序的效率 - 否則你可以用無用的函數來調用函數,這些函數不會做任何事情,程序也不依賴於計數器的奇怪增量。

0

有壓縮機可以完成您想要的工作!他們中的一些可以下載和使用離線工具,有些是直接通過網絡訪問:

http://javascriptcompressor.com

像jQuery和其他人,你可以用你的代碼維護腳本,並提供更快的加載包裝的版本是幾乎沒有可讀

0

如何:

創建兩個PHP頁面,包含了遊戲界面,另一個包含遊戲的代碼之一。對第一個進行編程,以便它創建一次性使用的字符串,標記將在第二個字符串調用JS代碼時作爲參數傳遞。編程第二個,以便檢查發送的字符串的有效性。如果字符串有效,那麼腳本應該輸出JS代碼,然後使字符串無效。

然後,當用戶複製腳本的URL,將其粘貼到他的瀏覽器中,並點擊「返回」時,他看到的所有內容都是空白頁面或「未經授權」消息。