我想將我的遊戲中的一個移植到WebGL,但它使用我從第三方獲得許可的聲音和圖像。如果只是將不受保護的文件直接從Web服務器上取出,將違反許可證。用Javascript保護內容
之前,我通過以我自己的文件格式嵌入一堆這些文件來解決這個問題,但我不確定是否可以從文件中讀取X個字節,然後將其傳遞給Javascript並說「嘿,這是一個PNG圖像。」那可能嗎?有沒有其他好的方法來保護文件?
我想將我的遊戲中的一個移植到WebGL,但它使用我從第三方獲得許可的聲音和圖像。如果只是將不受保護的文件直接從Web服務器上取出,將違反許可證。用Javascript保護內容
之前,我通過以我自己的文件格式嵌入一堆這些文件來解決這個問題,但我不確定是否可以從文件中讀取X個字節,然後將其傳遞給Javascript並說「嘿,這是一個PNG圖像。」那可能嗎?有沒有其他好的方法來保護文件?
該做的伎倆:
var i = new Image();
i.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAIAAAACUFjqAAAAAXNSR0IArs4c6QAAABJJREFUeJxj+N/wHw9iGJXGhgDu6Pk5cOz+IwAAABF0RVh0Q29tbWVudAB0RVhUIHRleHTAVE3RAAAAAElFTkSuQmCC';
然後,如果你嵌入該字符串的地方模糊不清,爭奪它,它應該保持遠離唾手可得。
克里斯你可以修改這個,並提供更多的信息?我對此非常感興趣。我認爲這正是我正在尋找的。我在哪裏可以找到更多信息? – Ben 2013-04-29 20:37:04
如果這些東西必須在用戶的瀏覽器中結束,那麼它就存在於用戶的瀏覽器中。除了通過混淆之外,你無法保護它,如果你保護的東西具有實際價值,那麼這是完全浪費時間。 (想想這樣說:如果它是你會遭受一些損失相當大,如果有人知道了非法真正有價值的東西—意義,小偷將獲得可觀的收益—則需要克服混淆了未成年人的努力顯然是值得的小偷)。
對。您在瀏覽器中看到,聽到或聞到的所有內容都已傳遞給瀏覽器,因此也已傳遞給用戶。 – Hyperboreus 2011-05-26 16:26:40
您的許可證是否允許您以加密形式將資源存儲在Web服務器上?如果這不是一種選擇,那麼你可能不得不使用一些可以封裝媒體的東西 - Java小程序。
您不能保護的東西在JavaScript中,因爲它在客戶端和任何你做混淆或「保護」執行文件,可以通過足夠的願意這樣做的用戶撤消。
如果你想保護的內容在您的JS文件,你需要創建一個持久的JS對象,通過定義一個對象,它是一個函數調用的結果。
這樣的事情...
var imageContainer = function(protectedImageContainer) {
var that = {};
that.getImage = function() {
// bytes -> image transform would happen here.
return protectedImageContainer.data;
};
return that;
};
在這個例子中,protectedImageContainer.data保護和防篡改,只能通過你的getImage方法訪問。
這與阻止右鍵單擊「另存爲...」應該讓你更接近你想要的位置。
在「//字節 - >圖像」部分是創建一個新的Image()對象並自己定義其像素數據的想法,而不是像new Image(「path/to/img.png」)那樣做? – Chris 2011-05-26 17:00:18
所以許可證要求..什麼?您是否將內容直接嵌入到已編譯的可執行文件中?如果是這樣,不管你做什麼,Javascript可能會違反... ... – 2011-05-26 16:24:42
許可證只是要求文件不在公開的地方,有人可以很容易地找到它們(通過檢查目錄或類似的東西那)。 – Chris 2011-05-26 16:35:32
網絡的本質意味着有人能夠輕鬆地找到他們。 – 2011-05-26 16:39:18