我想将我的游戏中的一个移植到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