一种基于JavaScript的资源隔离方法与系统

文档序号:37241835发布日期:2024-03-06 17:10阅读:17来源:国知局
一种基于JavaScript的资源隔离方法与系统

本发明属于针对javascript的资源隔离,尤其涉及一种基于javascript的资源隔离方法与系统。


背景技术:

1、javascript require无法实现资源隔离。当前node.js虽然提供的多种资源隔离技术,但存在问题。在嵌入式开发中,node.js 经常被用来编写后端代码,以及针对硬件进行交互。在 node.js 中,require 函数是一个非常重要的方法,可以让嵌入式开发者轻松地引入其他模块,从而简化代码编写。由于require 函数本身并不能实现资源隔离,node.js 通常借助以下技术进行资源隔离:

2、worker threads:worker threads 是一种多线程技术,可以在 node.js 中创建子线程运行 javascript 代码。它可以实现并行处理和 cpu 密集型任务的分离,从而提高应用程序的性能。

3、cluster模块:cluster 模块是 node.js 的内置模块,可以启动多个 node.js 进程来共同处理请求,以提高应用程序的吞吐量和稳定性。

4、docker容器:docker 容器是一种轻量级的虚拟化技术,可以将应用程序打包成一个独立的容器,并在不同的环境中进行部署和管理,以达到资源隔离和安全性的目的。

5、这些资源隔离技术主要解决了任务关键型系统的以下需求:高可用性:通过多线程、多进程或容器化技术,保证系统的可用性和稳定性。资源分离:将不同的任务或服务分配给不同的线程、进程或容器,避免相互影响,提高系统的资源利用率。安全性:通过容器化技术或其他隔离手段,保证系统的安全性和隔离性,防止不同应用程序之间的相互干扰和攻击。

6、这些资源隔离技术的缺点主要包括:多线程和多进程管理复杂度高,需要考虑锁、共享内存等问题,容易出现死锁、竞态条件等问题。容器化技术需要额外的系统支持和配置,可能会增加系统的负担和复杂度。不同的资源隔离技术在实践中可能会存在一些性能损失或安全风险,需要适当权衡和优化。


技术实现思路

1、本发明针对node.js中资源隔离存在的问题,本发明提出一种基于javascript的资源隔离方案。

2、本发明第一方面提出一种基于javascript的资源隔离方法。所述方法包括:步骤s1、在基于javascript的文件系统中,利用jsre对所有文件模块进行加密打包并生成对应的私钥;步骤s2、通过模块管理器建立针对所述所有文件模块的树形结构,所述树形结构中的根模块具有最高资源权限,每个文件模块均定义有如下属性:模块当前路径、模块id和父模块;

3、其中,在所述方法中,加载一个经加密打包的新的文件模块时:基于生成的所述私钥对所述经加密打包的新的文件模块进行解密,以获取所述新的文件模块;对所述新的文件模块在所述树形结构的文件系统中的资源权限进行判断,当且仅当所述新的文件模块或其父模块的模块当前路径在所述根模块的模块路径下,才加载并创建所述新的文件模块。

4、根据本发明第一方面的方法,在所述步骤s1中,利用所述jsre从加密算法库中选取加密算法,对所述所有文件模块进行加密打包,并为每一个文件模块生成对应的私钥;对经加密打包的新的文件模块进行解密时,所述jsre从所述私钥中获取所述加密算法,并基于所述加密算法对所述经加密打包的新的文件模块进行解密。

5、根据本发明第一方面的方法,对所述新的文件模块在所述树形结构的文件系统中的资源权限进行判断具体包括:以所述新的文件模块的模块当前路径和模块id组成所述新的文件模块的模块标识,在所述文件系统中搜索所述模块标识;搜索命中时,进一步判断所述新的文件模块的模块当前路径是否在所述根模块的模块路径下;若是,则加载所述新的文件模块,对所述新的文件模块中的文件进行解析,并创建所述新的文件模块;若否,则所述新的文件模块加载失败。

6、根据本发明第一方面的方法,在所述文件系统中搜索所述模块标识,搜索未命中时,提取所述新的文件模块的父模块;其中:当所述父模块存在时,以所述父模块的模块当前路径和模块id组成父模块标识,在所述文件系统中搜索所述父模块标识;搜索命中时,进一步判断所述父模块的模块当前路径是否在所述根模块的模块路径下;若是,则加载所述新的文件模块,对所述新的文件模块中的文件进行解析,并创建所述新的文件模块;若否,则所述新的文件模块加载失败;

7、本发明第二方面提出一种基于javascript的资源隔离系统。所述资源隔离系统的处理模块被配置为执行:在基于javascript的文件系统中,利用jsre对所有文件模块进行加密打包并生成对应的私钥;通过模块管理器建立针对所述所有文件模块的树形结构,所述树形结构中的根模块具有最高资源权限,每个文件模块均定义有如下属性:模块当前路径、模块id和父模块。

8、其中,加载一个经加密打包的新的文件模块时,所述处理模块被配置为执行:基于生成的所述私钥对所述经加密打包的新的文件模块进行解密,以获取所述新的文件模块;对所述新的文件模块在所述树形结构的文件系统中的资源权限进行判断,当且仅当所述新的文件模块或其父模块的模块当前路径在所述根模块的模块路径下,才加载并创建所述新的文件模块。

9、根据本发明第二方面的系统,所述处理模块具体被配置为:利用所述jsre从加密算法库中选取加密算法,对所述所有文件模块进行加密打包,并为每一个文件模块生成对应的私钥;对经加密打包的新的文件模块进行解密时,所述jsre从所述私钥中获取所述加密算法,并基于所述加密算法对所述经加密打包的新的文件模块进行解密。

10、根据本发明第二方面的系统,所述处理模块具体被配置为,对所述新的文件模块在所述树形结构的文件系统中的资源权限进行判断,具体包括:以所述新的文件模块的模块当前路径和模块id组成所述新的文件模块的模块标识,在所述文件系统中搜索所述模块标识;搜索命中时,进一步判断所述新的文件模块的模块当前路径是否在所述根模块的模块路径下;若是,则加载所述新的文件模块,对所述新的文件模块中的文件进行解析,并创建所述新的文件模块;若否,则所述新的文件模块加载失败。

11、根据本发明第二方面的系统,所述处理模块具体被配置为,在所述文件系统中搜索所述模块标识,搜索未命中时,提取所述新的文件模块的父模块;其中:当所述父模块存在时,以所述父模块的模块当前路径和模块id组成父模块标识,在所述文件系统中搜索所述父模块标识;搜索命中时,进一步判断所述父模块的模块当前路径是否在所述根模块的模块路径下;若是,则加载所述新的文件模块,对所述新的文件模块中的文件进行解析,并创建所述新的文件模块;若否,则所述新的文件模块加载失败;当所述父模块不存在时,则所述新的文件模块加载失败。

12、本发明第三方面公开了一种电子设备。所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时,实现本公开第一方面所述的一种基于javascript的资源隔离方法中的步骤。

13、本发明第四方面公开了一种计算机可读存储介质。所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现本公开第一方面所述的一种基于javascript的资源隔离方法中的步骤。

14、综上,本发明提出的技术方案通过引入jsre实现在运行过程中只能访问当前执行目录下的资源,不能访问上级资源,强调资源的限制和保护。使得在同一个应用程序中,不同模块之间的全局变量、包含库等资源互相隔离,从而提高系统的安全性和可靠性。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1