我想将我的一个游戏移植到WebGL,但它使用我从第三方获得许可的声音和图像。它会违反许可证,只是直接从Web服务器上提取未受保护的文件。
之前,我通过以我自己的文件格式嵌入一堆这些文件来解决这个问题,但我不确定我是否可以从文件中读取X个字节数,然后将其传递给Javascript并说“嘿,这是一个png形象。“那可能吗?还有其他保护文件的好方法吗?
答案 0 :(得分:3)
如果这些东西必须在用户的浏览器中结束,那么,它就在用户的浏览器中。除了混淆之外,你无法保护它,如果你保护的东西具有实际价值,这完全是浪费时间。 (按照这种方式思考:如果这是非常有价值的东西 - 意味着如果有人非法获得它会遭受相当大的损失,并且小偷会获得相当大的收益 - 那么克服混淆所需的微小努力显然是值得的。小偷。)
答案 1 :(得分:1)
如果要保护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方法访问。
这与阻止右键单击“另存为...”一起可以让您更接近您想要的位置。
答案 2 :(得分:0)
你无法保护javascript中的东西,因为它在客户端执行,你做的任何混淆或“保护”文件都可以由愿意这样做的用户撤消。
答案 3 :(得分:0)
这就是诀窍:
var i = new Image();
i.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAIAAAACUFjqAAAAAXNSR0IArs4c6QAAABJJREFUeJxj+N/wHw9iGJXGhgDu6Pk5cOz+IwAAABF0RVh0Q29tbWVudAB0RVhUIHRleHTAVE3RAAAAAElFTkSuQmCC';
然后,如果你把那根绳子嵌入某处隐藏起来并乱夺它,它就应该远离那些悬而未决的果实。
答案 4 :(得分:-2)
您的许可是否允许您以加密形式将资源存储在Web服务器上?如果这不是一个选项,那么你可能不得不使用可以封装媒体的东西 - 也许是Java Applets。