Office js 获取Office外接程序的主机源的可信方法

Office js 获取Office外接程序的主机源的可信方法,office-js,outlook-web-addins,Office Js,Outlook Web Addins,我目前正在实施Outlook加载项。每当用户即将完成一个潜在危险的操作时,它都会向用户显示一个弹出窗口,以防止出现危险 我希望不必在用户每次使用外接程序时都向用户显示弹出窗口——这只是他们第一次从新的主机源使用它。有没有办法获取Office外接程序的已验证主机来源,以便我记得用户下次信任它 现在我正在收听主机(例如)发送到Office.js SDK的postMessages,并查看MessageEvents上的origin,但看起来非常脆弱。看一看。这些设置存储在用户的邮箱中,因此无论使用哪个客

我目前正在实施Outlook加载项。每当用户即将完成一个潜在危险的操作时,它都会向用户显示一个弹出窗口,以防止出现危险

我希望不必在用户每次使用外接程序时都向用户显示弹出窗口——这只是他们第一次从新的主机源使用它。有没有办法获取Office外接程序的已验证主机来源,以便我记得用户下次信任它


现在我正在收听主机(例如)发送到Office.js SDK的
postMessage
s,并查看
MessageEvent
s上的
origin
,但看起来非常脆弱。

看一看。这些设置存储在用户的邮箱中,因此无论使用哪个客户端,用户都会关注这些设置

我想知道更多关于您在这里描述的攻击向量的信息。是否有人在iframe中创建并托管您的web应用程序。然后让最终用户转到并单击外接程序中的某些内容

您是否以某种方式验证您的用户?并担心如果他们合法登录您的网站…那么当他们进入恶意网站时,他们已经登录,因此您页面上的单击/操作将起作用,因为他们已经通过身份验证

您可能想看看:


并在登录站点时关联令牌。此调用将转到Exchange服务器并返回一个标识令牌,您可以将其与登录关联。如果用户通过OWA/Outlook登录,则可以关联令牌。当他们进入恶意站点时,他们可以欺骗getUserIdentityToken,但返回的令牌将不同。用户将被迫重新输入其凭据。如果用户在该点重新输入凭据,那么您可能会被套住。或者,如果用户只使用过恶意伪造的站点(而不是真实的站点),那么您可能会遇到问题……但是如果用户登录到伪造的站点……攻击者不知道他们的登录信息吗

因为我使用origin来避免显示clickjacking保护,所以我不确定漫游设置是否合适。恶意站点不能伪造漫游设置吗?数据存储在用户的Exchange邮箱中,当该用户登录其帐户并运行您的加载项时,可以访问这些数据。其他加载项无法访问它。不确定其他加载项是否相关。在漫游设置中存储
dont\u show\u clickjacking\u protection\u popup=true
的场景中,恶意网站似乎可以构建我的加载项框架,并诱使Office SDK从
Office.context.roamingSettings.get返回上述内容。如果我在将该值放入漫游设置之前对其进行加密,肯定会有所帮助(因为攻击者无法猜测他们必须将哪个值放入假漫游设置中,以使我的加载项不显示clickjacking保护)。这就是你的建议吗?加密当然不会有什么坏处,但我不确定我是否遵循了这里的IFRAME场景。在我的加载项页面上运行的Office.js SDK如何知道宿主页面(构建我的加载项的页面)实际上是一个合法的Outlook Web App,而不是恶意网站?我的印象是,它没有——这意味着它从主机页面接收到的漫游设置不可信。是的,这就是我试图防范的情况。目前,外接程序重用我在网站其余部分使用的会话cookie。通过getUserIdentityTokenAsync中的令牌登录用户是我计划稍后要做的事情,但我还没有考虑它对点击劫持攻击有何帮助,谢谢!目前,我认为在RoamingSettings中存储加密/不可用的turn clickjacking protection off令牌(如Marc LaFleur所建议的)是一个有效的解决方案,可以用您描述的getUserIdentityTokenAsync解决方案代替。