Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.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 如何通过pubsub在shell应用程序和micro应用程序(前端)之间进行安全通信_Javascript_Angular_Typescript_Publish Subscribe_Micro Frontend - Fatal编程技术网

Javascript 如何通过pubsub在shell应用程序和micro应用程序(前端)之间进行安全通信

Javascript 如何通过pubsub在shell应用程序和micro应用程序(前端)之间进行安全通信,javascript,angular,typescript,publish-subscribe,micro-frontend,Javascript,Angular,Typescript,Publish Subscribe,Micro Frontend,我有一个shell应用程序,它是执行所有API通信的容器应用程序。另外,我有多个微应用程序,它们只是将API请求信号广播给shell应用程序 现在,记住安全性,作为一个shell应用程序,它如何确保API请求信号来自我拥有的可信微应用程序 确切地说,我的问题是,有没有办法让shell应用程序知道信号来自它所拥有的微应用程序,而不是来自任何不受信任的(如黑客攻击、XSS)源因此,在大多数微前端中,每个微应用程序都对后端的相应微服务进行自己的API调用,而shell应用程序对此一无所知。与此相关,s

我有一个shell应用程序,它是执行所有API通信的容器应用程序。另外,我有多个微应用程序,它们只是将API请求信号广播给shell应用程序

现在,记住安全性,作为一个shell应用程序,它如何确保API请求信号来自我拥有的可信微应用程序


确切地说,我的问题是,有没有办法让shell应用程序知道信号来自它所拥有的微应用程序,而不是来自任何不受信任的(如黑客攻击、XSS)源

因此,在大多数微前端中,每个微应用程序都对后端的相应微服务进行自己的API调用,而shell应用程序对此一无所知。与此相关,shell应用程序最需要做的就是将一些应用程序配置传递给所有MicroApp,这些MicroApp的配置类似于各种后端的主机名,如果所有后端都使用相同的身份验证,则传递一个身份验证令牌

但是为了确保shell应用程序没有恶意代码的广告试图伪装成另一个microapp,那么

  • 微应用程序是如何与外壳对话的?有共同的定制活动吗?入侵者必须知道customEvent的名称,但这只是隐蔽的安全措施,而不是真实的

  • 其他方法如postMessage是在窗口对象之间,我认为这对您的情况没有帮助


  • 您可能能够重用shell和microapps都知道的authToken,因为它是在启动时通信的。但是,如果你的微应用程序来来往往也不起作用。

    从你的问题来看,不清楚你的应用程序是在iFrame中运行,还是直接加载到你的页面中

    在使用postMessage的iFrame的情况下,您可以通过
    event.origin
    检查收到消息的来源。将此与允许的域列表进行比较


    如果您的微应用程序直接位于您的页面上,则您只需控制允许加载到其中的内容。

    根据微前端体系结构,每个微前端都应调用自己的API(微服务)。但是,您的Shell应用程序可以提供一些通用/全局库,帮助微前端进行AJAX调用。但打电话的责任必须由个人微型前端承担。

    您的问题不够精确。你所说的
    shell
    应用程序是什么意思?是不是某个应用程序在你的JS应用程序中扮演后台角色?如果是这样,那么当您投入生产时,您更愿意单独部署它们,通过使用HTTPS和JWT,您将达到足够的安全级别。如果你打算在本地使用它们,那么为什么还要担心安全性呢?@YuriyKravets Shell application-Angular application作为容器,严格地在前端提供微应用程序(这也是Angular)安全性,这是一种伪安全性,无法确保浏览器中发生的事情。我假设您以运行时集成的方式运行应用程序,然后您将确保下载一个受信任的微应用程序。@当然,它不一定是一个角度应用程序,基本上任何应用程序都可以是shell