Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.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 ProcessingJS代码权限_Javascript_Permissions_Processing - Fatal编程技术网

Javascript ProcessingJS代码权限

Javascript ProcessingJS代码权限,javascript,permissions,processing,Javascript,Permissions,Processing,由于Java在1月更新了它的安全设置,而且我负担不起一个可信的证书来在线登录我的jar文件(每年大约200美元),我只是将我的Processing2JAR文件转换为Processing1.5JavaScript文件。现在的问题是,为了让访问者看到js输出,我必须让他们至少“读取”我的pde文件,而我不想公开我的源代码 那么,我如何在不发布源代码的情况下展示我的工作呢?非常感谢 我在/var/www/html/visual下的处理文件夹: -rw-r--r--. 1 root root 270

由于Java在1月更新了它的安全设置,而且我负担不起一个可信的证书来在线登录我的jar文件(每年大约200美元),我只是将我的Processing2JAR文件转换为Processing1.5JavaScript文件。现在的问题是,为了让访问者看到js输出,我必须让他们至少“读取”我的pde文件,而我不想公开我的源代码

那么,我如何在不发布源代码的情况下展示我的工作呢?非常感谢

我在/var/www/html/visual下的处理文件夹:

-rw-r--r--. 1 root root   2709 Sep 10 21:03 main.pde
-rw-r--r--. 1 root root    238 Mar  6 15:12 proj01.html
-rw-r--r--. 1 root root 231867 Mar  4 23:55 processing-1.4.1.min.js
html文件如下所示(以便访问者知道我的pde文件名):


并且自签名jar文件被Java Update51阻止,除非访问者手动将安全级别设置为最低。只有从赛门铁克(Symantec)或戈达迪(Godaddy)等服务机构购买的证书才能让jar文件在浏览器中顺利运行。

您可以编辑html文件,使其不包含指向pde文件的链接,您可以删除该链接。 仍然可以查看页面的html源代码

不过,您可以创建一个自签名证书来签名.jar文件。 这是我几年前上传的自签名小程序的一个例子。 我已经用这个签名了


但是,让访问者查看源代码可能会对他们很有用。

是的,隐藏代码(和任何其他资产)的方法很简单。它们并不是防弹的,它尽可能接近编译后的代码而不会变得过于偏执。您在这里看到的是一个自动执行的匿名函数,只留下灰尘(当然还有一个正在运行的processing.js草图)。在该函数中包含处理代码,base64编码(请参阅标记点,有关更多信息,请参阅下文)

它还将导入库、设置画布并运行它。没有pde,没有脚本元素,除了处理设置之外没有画布id。除了全局处理库对象内的某个地方,没有对代码的引用,5分钟后找不到它,所以我认为它足够安全。)

有关base64编码的其他信息: 此方法将任何内容转换为数据字符串。 使用btoa()进行编码,或使用atob()进行解码。有一些网站会为您进行编码,如果您有像您的案例中那样已经使用javascript的大文件,那么会更舒服

它可以应用于所有类型的资产,例如,可以在没有外部资源的情况下创建具有声音和纹理的整个游戏。但这只是表示数据的另一种方式,它并不是真正的“编译”,因为编码不会永久性地更改代码,您无需执行任何操作,只需在字符串上运行atob(),它就会立即恢复原始形式

有关如何运行脚本的其他信息: 您可以将脚本标记隐藏在dom树中的某个位置(可能是最简单的解决方案)在外部javascript加载它(甚至可以尝试使用模糊的文件名,省略.js扩展名或使用另一个扩展名),在这里您还可以应用缩小。base64字符串很可能占代码的95%,其余部分将缩小,几乎与编码数据无法区分


在各个方面都有很多方法可以改进,但我想坚持那些我认为对你来说最实用的方法。如果你想要更多,尽管问

非常感谢你的建议!我很欣赏分享的精神,但在这种情况下,我没有编写处理代码。因此,我必须考虑作者的版权,虽然我想展示这项工作的输出(我拥有这个项目的数据和想法,但我不拥有源代码)。其次,由于Java Update 51安全默认设置,自签名jar仍然会被阻止。我将更新我的问题以进行说明。我明白了,因此对于自签名选项,您需要通知用户在Java update 51之前使用JRE或更改安全设置:(如果您的软件必须在浏览器中100%工作,这不是一个很好的解决方案:允许下载版本(编译的桌面应用程序)如何以及显示软件的屏幕预览?
<!DOCTYPE html>  
 <html>  
 <head>  
    <script src="processing-1.4.1.min.js"></script>

 </head>  
 <body>  
    <canvas data-processing-sources="main.pde"></canvas>  
</body>  
</html> 
(function(){
    var lib,code;
    code=atob("/*YOUR BASE64 ENCODED CODE GOES HERE*/");
    lib = document.createElement("script");
    lib.src="processing-1.4.1.min.js";
    document.head.appendChild(lib);
    lib.onload=function(){
        var canvas,pjs;
        canvas = document.createElement("canvas");
        document.body.appendChild(canvas);
        pjs = new Processing(canvas,code);
        this.onload=null;
}
})()