用Javascript保护内容

Protect content in Javascript

本文关键字:保护 Javascript      更新时间:2023-09-26

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