保护Javascript中的内容

问题描述

| 我想将我的游戏之一移植到WebGL,但是它使用了我从第三方获得许可的声音和图像。它将许可证直接从Web服务器中拉出不受保护的文件是违背许可证的。 以前,我是通过将一堆这些文件以自己的文件格式嵌入来解决此问题的,但是我不确定是否可以从文件中读取X字节的字节数,然后将其传递给Javascript,然后说“”嘿,这是png图片。\“可以吗?还有其他保护文件的好方法吗?     

解决方法

如果这些东西必须最终存储在用户的浏览器中,那么就在用户的浏览器中。您只能通过迷惑来保护它,如果您要保护的东西具有实际价值,那完全是在浪费时间。 (这样想:如果它是真正有价值的东西-意味着如果有人非法获得它,您将遭受相当大的损失,并且小偷将获得可观的收益-那么克服混淆所必需的较小努力是对于小偷来说显然是值得的。)     ,如果要保护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方法访问。 这与阻止右键单击\“另存为... \”可以使您更接近想要的位置。     ,您无法保护javascript中的内容,因为它是在客户端执行的,并且您进行混淆或“保护”文件的任何操作都可能被用户愿意撤消的操作撤消。     ,这可以解决问题:
var i = new Image();
i.src = \'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAIAAAACUFjqAAAAAXNSR0IArs4c6QAAABJJREFUeJxj+N/wHw9iGJXGhgDu6Pk5cOz+IwAAABF0RVh0Q29tbWVudAB0RVhUIHRleHTAVE3RAAAAAElFTkSuQmCC\';
然后,如果将该字符串嵌入晦涩难懂的地方并进行打乱,则应远离低垂的果实。     ,您的许可证是否允许您以加密形式将资源存储在Web服务器上?如果这不是一个选择,那么您可能将不得不使用可以封装媒体的东西-也许是Java Applets。