人們一直在說HTML5這麼多好話,但我最關心的一個問題是如何保護我的遊戲源代碼。保護HTML5遊戲來源
本質..
- 如何防止其他使用我們自己研發的遊戲引擎(這是一個巨大的資產)
- 如何防止其他從網上下載遊戲和其他平臺
- 承載它如何隱藏源服務器API調用詳細信息,例如我們自己的記分牌API,虛擬貨幣API等。
人們一直在說HTML5這麼多好話,但我最關心的一個問題是如何保護我的遊戲源代碼。保護HTML5遊戲來源
本質..
「你不能」是所有3個問題的答案。你可以做的唯一事情就是減慢對代碼感興趣的人,但最終如果有人想使用你的代碼,那麼你就無能爲力。
最終,網絡上沒有資產保護。如果你可以在瀏覽器中看到它,你可以用curl下載它。如果資產保護是您的主要擔憂,我不推薦使用HTML和JavaScript。
您可以對您的代碼進行混淆處理,以防止隨意盜竊並使用SSL防止窺探,但勤勞的人們仍然可以通過其他方式訪問這些資產。
SSL不會阻止窺探。 HTTP代理(如Fiddler2)將允許您在中間設置一個人,以便它可以解密從您的計算機(通過本地代理)發送到主機的所有流量。 – 2013-06-25 13:16:59
涅槃你的JS代碼將使它更難重用,但並非不可能
縮小你的js代碼將使它很難重用,但不是不可能 你可以將js美化到chrome開發工具中,所以應該僅僅通過性能問題 – mpm 2012-03-08 04:33:07
沒有物理的方法可以複製保護的數字文件。許多行業都嘗試過。許多人失敗了。可悲的是,許多人會繼續嘗試並繼續失敗,但是企業似乎無法從他們過去的錯誤中學習。
最好不要太在意。專注於您的客戶。
您可以在安全硬件機櫃(如機場)的觸摸屏電腦上運行您的遊戲,而不是通過互聯網訪問它。也許不是你想要的理想答案。
+1因爲不在框 – 2013-06-25 13:17:50
+1無論是在盒子內還是在盒子外面 – Tackle 2014-01-01 10:12:15
我個人使用谷歌關閉編譯有先進的壓縮模糊處理我的代碼(下載Java文件,不要使用在線版!)。編寫代碼需要一些額外的努力,但是它的編寫都很好,一旦你理解了編譯器的工作方式,遵守其規則是非常容易的。它不僅會混淆你的代碼,而且會實際優化它的執行速度和文件大小。
要清楚 - 是的,其他人是正確的,沒有最終的保護...... bla bla。但:有沒有試圖讓谷歌的頭或尾巴JavaScript?我嘗試失敗了。如果在代碼中使用混淆的類名稱和很少的字符串,它將很難閱讀,這意味着它可能需要幾個月,這取決於代碼的複雜性。
對於API調用,事情是不同的。加密將無法正常工作,因爲解密代碼將在JavaScript內部可見 - 即使有混淆,該部分也難以隱藏,因爲AJAX代碼總是看起來有點相似......並且加密會佔用您可能需要的CPU時間。推遲是一種方式,但最終,API調用將會或多或少地具有可讀性。
混淆你的JavaScript代碼可能是一個重要的步驟。混淆會使代碼變得如此複雜,以致沒有理智的人會試圖破解它。
我一直在使用jscrambler.com,效果很好。也就是說,混淆並不能解決所有問題。用戶仍然可以查看瀏覽器和服務器之間交換的所有流量。所以他們會知道API如何工作以及如何使用它。
爲了避免這種情況,您可以使用JavaScript加密郵件。這可能有助於保護內容。我在stackoverflow上發現了一篇關於使用javascript加密的文章:Javascript AES encryption。有幾種實現可以用於低性能影響。
最後但並非最不重要的一點,所有的輸入都應在服務器端徹底檢查。所有可以在服務器端實現的邏輯應該保持在那裏。
你已經得到了答案,基本上都說「你不能阻止這個」,但請注意,這隻適用於你的遊戲的_client-side_組件。 _server-side_組件是安全的。因此,人們將能夠看到/從您的服務器API請求/響應,但他們將無法看到如何在服務器上實現API。 – nnnnnn 2012-03-08 04:36:22
@nnnnnn很好,很清楚,你可以從API調用的工作方式中獲得很多信息,如果你真的想要的話可以在此基礎上構建。許多在線遊戲(如WoW等)都有非官方的服務器。您可以隱藏確切的實現,但不能隱藏功能。 – zatatatata 2012-03-09 00:43:14
如果您使用node-WebKit,它會將您的遊戲編譯爲Windows中的exe文件。 – zachdyer 2015-07-09 13:59:50