Outlook/Teams加载项代码能否在客户端应用中被修改?
问题解答
是的,用户完全可以修改本地运行的Outlook加载项代码,伪造发送给你API的邮箱地址。
原因:
- 用Yeoman生成的Outlook加载项,其客户端代码(包括
commands.js)是运行在用户的浏览器或Outlook客户端的沙箱环境中。用户可以通过以下方式篡改代码逻辑:- 在浏览器中,利用开发者工具(如Chrome DevTools)的Sources面板直接修改
action函数的内容,保存后即可生效,点击加载项按钮时就会发送伪造的邮箱。 - 如果是用户本地侧加载的加载项,他们甚至可以直接编辑本地文件系统中的
commands.js,修改后重新加载加载项,篡改后的代码就会被执行。
- 在浏览器中,利用开发者工具(如Chrome DevTools)的Sources面板直接修改
防范方案:
既然客户端数据不可信,你需要从后端层面做验证和校验:
- 验证邮箱格式:后端接收到邮箱后,先检查格式是否符合标准(比如用正则表达式或成熟的验证库),直接拒绝格式无效的请求。
- 通过身份验证获取真实邮箱:不要依赖客户端传递的邮箱值,而是通过Microsoft Graph API结合单点登录(SSO)功能,让后端获取用户的合法身份令牌,再调用Graph API获取用户的真实邮箱信息。这种方式下,客户端无法篡改令牌中的身份数据,能确保你拿到的是用户的真实邮箱。
- 添加请求签名验证:可以给客户端请求添加签名,后端验证签名的合法性,防止请求被篡改。不过这种方式需要妥善保管签名密钥,避免泄露。
内容的提问来源于stack exchange,提问作者curious-buddy
相关产品推荐
相关产品推荐

