2014-01-08 29 views
0

我想只允許我的遊戲在某些域上工作。默認情況下,JavaScript的構建版本可以在任何地方工作,並被縮小和醜化。如果在允許的域外使用,我可以做些什麼來「破壞」遊戲?如何保護遊戲的源代碼僅用於允許的域名?

我在想一些讀取域名的內容,並基於此將破壞它。但是這很容易欺騙,只需要更改我請求域名的地方的所有實例並放置一個允許的地方。

另一個問題是請求我的自定義服務的一點點數據。想象一下,我處於允許的域中,並且請求一些隨我提供的時間段而變化的數據。此外,響應將基於允許的域列表。如果ajax/post請求中的源域被允許,則發送一個「正確」位,如果不是,則會「中斷」遊戲;這會在遊戲中每隔一段時間發生一次。

您認爲如何?很容易破解?

+2

沒有好的方法來做到這一點,但我猜想有一些微妙的方法來檢查一段混淆代碼中的當前域。當然,這裏沒有什麼是完全安全的。 –

+0

通過改變遊戲中某個我認爲很難發現的變量的變量,想象在Box2D引擎中改變一個單獨的+會使得一個不可玩的遊戲(或者更好的一個lololol)。 –

+0

您的遊戲是否完全用JavaScript編寫?或者還有一些服務器端語言? – user1321471

回答

0

修改服務器,以便它根據客戶端的子網地址返回不同版本的腳本。這樣,沒有客戶端依賴有效(或任何)DNS,並且服務器完全控制授權過程。

然後,客戶端將收到一個可以報告錯誤並終止的應用程序版本。

+1

但是如果黑客將訪問一個允許的網站並將js和主機複製到它自己的網站上,那麼就會被黑客入侵,對吧? –

+1

您可以控制Web服務器。如果您限制將腳本提供給您授權的用戶,那麼他們必須下載腳本並將其放到其他地方。嘗試分解問題並在服務器中留下一些關鍵功能,以便從安全角度使腳本不相關。 – Pekka

1

一般來說,JavaScript(或任何客戶端語言)不是放置安全或許可相關代碼的正確位置,因爲它可以通過修改javascript輕鬆繞過。縮小Javascript會使修改更難/更慢,但不會阻止它。

如果涉及到某種服務器端語言,那麼您可能能夠調查服務器端許可解決方案,但通常服務器端腳本也可以被任何有權訪問服務器的人修改或反編譯。

另一種選擇可能是將大量代碼託管在您自己的服務器上,並且任何想要使用您的遊戲的服務器都需要通過服務器將服務器的許可證密鑰發送給服務器,以這種方式許可證密鑰保持私密狀態,只有你的服務器和託管服務器知道它,你的服務器纔會響應一個會話令牌,然後客戶端可以使用它來訪問你的遊戲。由於許可證密鑰會保密,因此它會使第三方難以攔截它,如果沒有它,他們將無法獲得會話令牌。但是,這隻適用於涉及服務器端語言,如果它都在JavaScript中完成,那麼這將不會有太多的用處。

+0

現在是一個簡單的遊戲。我正在尋找一些不能涉及服務器端的東西。應該很難破解它,但並非不可能,不是那麼重要。 –