Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript在客户端无法访问的情况下解密文件_Javascript_Security_Encryption_Three.js_Cryptojs - Fatal编程技术网

Javascript在客户端无法访问的情况下解密文件

Javascript在客户端无法访问的情况下解密文件,javascript,security,encryption,three.js,cryptojs,Javascript,Security,Encryption,Three.js,Cryptojs,我想在个人网站上使用或展示我的一些3d模型。为了在web上显示3d模型,客户端需要从服务器获取3d网格和纹理图像的文件 但我不希望我的访问者能够访问这些文件。我希望你能给我指出正确的方向。以下是我的一些想法,但我认为它们行不通: 1使用类似于加密和解密文件的东西 但是,当在前端解密文件时,用户不能也解密文件吗? 钥匙必须以某种方式转移到前端代码,不是吗? 2将文件拆分为小块,并在客户端上重新编译 与1相同的问题 重新编译的代码需要放在客户机上,可以用来访问文件 在详细阐述这些想法时,我不太确定我

我想在个人网站上使用或展示我的一些3d模型。为了在web上显示3d模型,客户端需要从服务器获取3d网格和纹理图像的文件

但我不希望我的访问者能够访问这些文件。我希望你能给我指出正确的方向。以下是我的一些想法,但我认为它们行不通:

1使用类似于加密和解密文件的东西

但是,当在前端解密文件时,用户不能也解密文件吗? 钥匙必须以某种方式转移到前端代码,不是吗? 2将文件拆分为小块,并在客户端上重新编译

与1相同的问题 重新编译的代码需要放在客户机上,可以用来访问文件
在详细阐述这些想法时,我不太确定我试图做的事情是否可能简单的回答是:如果是在一个网站上,你就没有机会保护它不受一个有足够时间的有决心的人的伤害。这里唯一的例外是视频流,它可以使用“加密媒体扩展”API将视频传送到屏幕,而浏览器的任何部分都不能与原始数据交互

无论您如何保护这些文件,读取它们的代码也需要发送到浏览器。最终,原始数据将出现在js运行时内存中的某个地方,可以使用内置调试器将其提取出来。任何加密代码的机制也是如此。这使它更加困难,但并非不可能。您可以使用WebAssembly使该部分代码更难进行反向工程,但我不需要这样做:

最后,数据需要到达webgl api,因此我可以使用浏览器扩展拦截相关的webgl调用,并在那里获取所有原始数据。您还可以继续加密顶点数据,加密方式可以在顶点着色器中解码,但猜猜看:我也可以读取顶点着色器代码

这一清单还在继续。这是无法避免的。但也许你让这件事变得很难,没人会打扰你

对我来说,最有希望的选择似乎是:

使用LoFi或局部模型在浏览器中与全分辨率模型的渲染一起进行渲染。我在几个下载CAD-/3D模型的网站上看到了这一点。他们使用合并模型,有时减少顶点数,低分辨率纹理等,同时提供最终结果的图像,一旦我付钱,结果会是什么样子

创建自己的文件格式或隐藏开发人员工具的网络视图中使用的文件格式。例如,谷歌地图/地球公司(GoogleMaps/earth)就利用他们的3d数据,他们可能正在使用基于protobuf的东西,但反向工程非常困难

是的,我想你也可以使用一个预先共享的秘密,这样至少不太明显哪些文件包含3d数据


简单的回答是:如果是在一个网站上,你就没有机会保护它不受一个有足够时间的有决心的人的伤害。这里唯一的例外是视频流,它可以使用“加密媒体扩展”API将视频传送到屏幕,而浏览器的任何部分都不能与原始数据交互

无论您如何保护这些文件,读取它们的代码也需要发送到浏览器。最终,原始数据将出现在js运行时内存中的某个地方,可以使用内置调试器将其提取出来。任何加密代码的机制也是如此。这使它更加困难,但并非不可能。您可以使用WebAssembly使该部分代码更难进行反向工程,但我不需要这样做:

最后,数据需要到达webgl api,因此我可以使用浏览器扩展拦截相关的webgl调用,并在那里获取所有原始数据。您还可以继续加密顶点数据,加密方式可以在顶点着色器中解码,但猜猜看:我也可以读取顶点着色器代码

这一清单还在继续。这是无法避免的。但也许你让这件事变得很难,没人会打扰你

对我来说,最有希望的选择似乎是:

使用LoFi或局部模型在浏览器中与全分辨率模型的渲染一起进行渲染。我在几个下载CAD-/3D模型的网站上看到了这一点。他们使用合并模型,有时减少顶点数,低分辨率纹理等,同时提供最终结果的图像,一旦我付钱,结果会是什么样子

创建自己的文件格式或隐藏开发人员工具的网络视图中使用的文件格式。例如,谷歌地图/地球公司(GoogleMaps/earth)可能正在使用他们的3d数据 一些基于protobuf的东西,但是逆向工程非常困难

是的,我想你也可以使用一个预先共享的秘密,这样至少不太明显哪些文件包含3d数据


如果数据必须是可读的格式,猜猜他们能得到什么。在代码中的一个简单断点之后,你解密了它,他们就得到了它。所以最后,真的没有安全的方法。如果数据必须是可读的格式,猜猜他们能得到什么。在代码中的一个简单断点之后,你解密了它,他们就得到了它。所以最后,真的没有安全的方法。很好的答案!你能给我发送一个浏览器扩展来截取相关的webgl调用吗?例如,你可以使用最优秀的spector.js来了解有关webgl的情况。但他们故意不记录实际的缓冲区内容,这是一个很好的理由,这是为了保护艺术家的作品。。。还有其他扩展可以做到这一点,而且如果需要的话,自己编写一个简单的扩展并不复杂。如果您想了解更多关于反向工程缩小的three.js代码的信息,请看这里:很好的答案!你能给我发送一个浏览器扩展来截取相关的webgl调用吗?例如,你可以使用最优秀的spector.js来了解有关webgl的情况。但他们故意不记录实际的缓冲区内容,这是一个很好的理由,这是为了保护艺术家的作品。。。还有其他扩展可以做到这一点,而且如果需要的话,自己编写一个简单的扩展并不复杂。如果您想了解有关反向工程缩小的three.js代码的更多信息,请查看以下内容: