在javascript中暴露facebook用户访问令牌有哪些安全风险?

And*_*ndy 11 security facebook access-token

假设我的应用程序有一个访问令牌给一些Facebook用户.将JS代码中的访问令牌暴露给访问我网站的其他用户是否存在安全风险?如果是这样,他们可以用它做什么?

Mik*_*uel 14

你有风险

  1. 困惑的代理人 - 您的代码授予可能有意或者代表更多恶意代码滥用这些特权的代码的权限.
  2. 通过代码注入(XSS)进行盗窃 - 凭证可能会被通过XSS漏洞注入页面的代码窃取,然后用于代表用户执行操作,可能会生成指示您作为罪魁祸首的日志.
  3. 通过窃听窃取 - 如果浏览器和服务器之间的连接中存在非HTTPS内容,则具有读取数据包能力的窃听者可能会窃取凭据.
  4. 恶意软件被盗 - 如果用户的计算机上运行了恶意软件,则将这些凭据发送到浏览器会将其暴露给该恶意软件.恶意软件可能必须读取浏览器进程拥有的内存或浏览器写入的缓存文件.


小智 9

Facebook访问令牌为您的应用程序向有权访问该令牌的任何人提供与特定用户相同的权限.因此,如果您的应用获得了执行操作A,B和C的权限并获得了相应的令牌,那么任何能够获取令牌的应用都将拥有与该用户相同的权限(直到令牌过期为止) ).

所以,是的,存在风险.您需要保护令牌不会访问任何与Facebook用户不具有相同权限的人/任何人.

  • 但访问令牌的使用仅限于应用程序域.所以似乎其他应用程序将无法使用它. (3认同)
  • 根据您的示例,您的应用具有Facebook的访问令牌.这意味着它有权在Facebook上执行操作A,B和C. 任何抓住该令牌的人现在都拥有在Facebook上作为相关用户执行操作A,B和C的相同权利.应用程序域阻止其他应用程序接受令牌,但无论谁提交,Facebook都会乐意接受它.这就是为什么OAuth令牌应该受到保护并且是短暂的.关于OAuth 2.0持有者令牌的IETF互联网草案应该详细解释这个:http://self-issued.info/docs/draft-ietf-oauth-v2-bearer.html (2认同)