开发Microsoft Teams选项卡应用安全注意事项

咱们都知道,为了方便广大的开发人员快速开发Microsoft Teams选项卡应用,微软提供了一个JS SDK,你能够经过这里 https://docs.microsoft.com/en-us/javascript/api/overview/msteams-client?view=msteams-client-js-latest#:~:text=Microsoft%20Teams%20JavaScript%20client%20SDK%201%20Finding%20the,can%20use%20import%20syntax%20to%20import%20specific%20modules. 了解更多详情。 javascript

在这个SDK中,咱们常常会用Context对象去获取当前的上下文信息,例如用户信息啦,所在的团队或频道信息等等。 java

https://docs.microsoft.com/en-us/javascript/api/@microsoft/teams-js/context?view=msteams-client-js-latest node

可是这里其实有一个潜在的安全问题:若是这个网页不是在Teams中运行,而是被别有用心的人员在外部套了一个iframe,而且模拟了一个相似的Context对象的话,有可能进行安全方面的攻击。 express

那么,若是设计一个更加安全的机制,不容许咱们的网页被其余系统随意地用iframe嵌入,只容许在Teams中进行嵌入呢? npm

能够经过X-Frame-options这个服务器选项来控制。请参考 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options api

但这个选项目前要么设置容许全部域访问,要么设置全部域都不能访问。 安全

 

第三个选项如今是不推荐使用的,取而代之的是一个新的HTTP Header,叫作CSP, Content-Security-Policy 服务器

 

你须要将以下几个域名加入进去 spa

teams.microsoft.com 设计

*.teams.microsoft.com

*.skype.com *.sharepoint.com

outlook.office.com

and the current host

 

 

若是你是用nodejs来开发,如今也有一个简单的作法来实现这样的需求

https://www.npmjs.com/package/express-msteams-host

 

 

在具体的代码中,还能够很容易地检测当前是否是在Teams中运行,以下范例代码

相关文章
相关标签/搜索