我们都知道,为了方便广大的开发人员快速开发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. 了解更多详情。

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

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

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

那么,如果设计一个更加安全的机制,不允许我们的网页被其他系统随意地用iframe嵌入,只允许在Teams中进行嵌入呢?

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

但这个选项目前要么设置允许所有域访问,要么设置所有域都不能访问。

第三个选项现在是不推荐使用的,取而代之的是一个新的HTTP Header,叫做CSP, Content-Security-Policy

你需要将如下几个域名加入进去

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中运行,如下范例代码

开发Microsoft Teams选项卡应用安全注意事项的更多相关文章

  1. Microsoft Teams 集成 (协作, 沟通 和 行为)

    Microsoft Teams 集成 (协作, 沟通 和 行为) 概述 Microsoft Teams是在Office 365中以chat为中心的工作空间.软件开发团队可以快速获得在一个专门的团队协作 ...

  2. Microsoft Teams 版本与语音落地介绍

    我亲爱的小伙伴们,失踪人口回归啦~~ 今天和大家聊的是Microsoft Teams,Teams作为协作的集大成者,可以实现skype for Business的所有功能,还可以在teams里集合Of ...

  3. 收官之作:利用Microsoft Teams构建中大型社区的技术架构与运营经验

    这是我在 精彩又一年:Microsoft Teams技术社区2018年度回顾和展望 活动上面的主题分享,我用Microsoft Teams技术社区的实践经验,给大家整理和分享了技术架构和一些运营经验. ...

  4. 如何加入Microsoft Teams 技术社区

    作者:陈希章 时间:2018-11-19   概述 这个手册适合没有Office 365 账号的用户,你可以使用免费版立即开始使用Microsoft Teams,并且与微软的产品组专家,以及来自两岸三 ...

  5. [Microsoft Teams]使用连接器接收Azure Devops的通知

    1. 什么是连接器 连接器(connector)是Teams中频道的一个接受消息的功能,官方的解释如下: 连接器允许用户订阅来自 web 服务的接收通知和消息. 它们公开服务的 HTTPS 终结点,通 ...

  6. 微软宣布一批新获得Microsoft Teams认证的会议硬件

    COVID-19 疾病流行期间,微软见到了 Microsoft Teams 视频会议解决方案取得的巨大增长.然而在许多情况下,生产力与音视频硬件的质量息息相关.好消息是,该公司刚刚完成了一批第三方硬件 ...

  7. Microsoft Teams 2021最新功能发布解读 – 会议篇

    正在进行的2021年的Microsoft Ignite大会,发布了一系列跟Microsoft Teams相关的新功能,英文介绍请参考 https://techcommunity.microsoft.c ...

  8. Microsoft Teams 最新功能发布:协作篇

    正在进行的2021年的Microsoft Ignite大会,发布了一系列跟Microsoft Teams相关的新功能,英文介绍请参考 https://techcommunity.microsoft.c ...

  9. 开发环境中biztalk项目设置注意事项(转)

      适用版本:biztalk 2006 适用环境:开发测试环境 在开发过程中,在开发环境中,一定会是一个对项目不断的修改.编译.部署.测试,查看测试结果,发现有问题,然后回到开发环境再修改.编译.部署 ...

随机推荐

  1. c++面试笔试集锦

    1. char *const p 是指针常量,通俗的解释:指针本身是一个常量 也就是不能改变该指针的指向性,可以改变指向的量的值 const char *p 是常量指针,解释:指向常量的指针,指针指向 ...

  2. typedef void (*sighandler_t)(int);

    typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler); ---------- ...

  3. nginx教程<二>(高可用)

    1.nginx集群 对于访问量较大的网站来说,随着流量的增加单台服务器已经无法处理所有的请求,这时候需要多台服务器对大量的请求进行分流处理,即负载均衡. 而如果实现负载均衡,必须在网站的入口部署服务器 ...

  4. Flink-v1.12官方网站翻译-P002-Fraud Detection with the DataStream API

    使用DataStream API进行欺诈检测 Apache Flink提供了一个DataStream API,用于构建强大的.有状态的流式应用.它提供了对状态和时间的精细控制,这使得高级事件驱动系统的 ...

  5. Jenkins开启丢弃旧的构建?你可要小心啊!

    玩Devops的小伙伴应该对Jenkins都有了解. Github上16.8k的Star的项目,1500+的构建.发布等自动化插件可供选择,事实上的业界CICD标准领导者. JFrog.Coding等 ...

  6. Codeforces Round #697 (Div. 3) G. Strange Beauty (DP,数学)

    题意:给你一组数,问你最少删去多少数,使得剩下的数,每个数都能整除数组中其它某个数或被数组中其它某个数整除. 题解:我们直接枚举所有因子,\(dp[i]\)表示\(i\)在数组中所含的最大因子数(当我 ...

  7. 病毒侵袭 HDU - 2896 板子题

    当太阳的光辉逐渐被月亮遮蔽,世界失去了光明,大地迎来最黑暗的时刻....在这样的时刻,人们却异常兴奋--我们能在有生之年看到500年一遇的世界奇观,那是多么幸福的事儿啊~~ 但网路上总有那么些网站,开 ...

  8. C# TCP应用编程一 概述

    TCP 是Transmission Control Protocol(传输控制协议)的简称,是TCP/IP 体系中面向连接的运输层协议,在网络中提供全双工的和可靠的服务.一旦通信双方建立了TCP 连接 ...

  9. 浅谈Webpack模块打包工具二

    Webpack插件机制介绍 Loader专注实现资源模块加载,plugin解决其他自动化工作,比如清除dist目录,拷贝静态文件值输出目录,压缩输出代码等,下面列举几个plugin 的例子. Webp ...

  10. k8s二进制部署 - coredns安装

    coredns的资源清单文件rabc.yaml apiVersion: v1 kind: ServiceAccount metadata: name: coredns namespace: kube- ...