Api 向用户公开OAuth访问令牌有哪些安全缺陷?

Api 向用户公开OAuth访问令牌有哪些安全缺陷?,api,security,oauth,Api,Security,Oauth,这个标题听起来可能很愚蠢,但我找不到更好的方式来表达我自己 我有一个使用OAuth2服务器的API。这个API是我的移动应用程序的后端服务,但我也将为第三方应用程序提供它 我还有一个登录方法,用于使用电子邮件和密码对用户进行身份验证,并将访问令牌返回给该用户以用于我的移动应用程序 因此,每当您使用email和password创建POST/api/v1/users/auth时,您将获得一个“完全访问”令牌,该令牌具有所有可用的作用域。我不认为这里有什么大的缺陷,因为任何持有用户凭据的人都可以通过w

这个标题听起来可能很愚蠢,但我找不到更好的方式来表达我自己

我有一个使用OAuth2服务器的API。这个API是我的移动应用程序的后端服务,但我也将为第三方应用程序提供它

我还有一个登录方法,用于使用电子邮件和密码对用户进行身份验证,并将访问令牌返回给该用户以用于我的移动应用程序

因此,每当您使用
email
password
创建
POST/api/v1/users/auth
时,您将获得一个“完全访问”令牌,该令牌具有所有可用的作用域。我不认为这里有什么大的缺陷,因为任何持有用户凭据的人都可以通过web界面访问应用程序,并做任何他想做的事情

但是,认为任何人都可以从现有应用程序中获取访问令牌还是很奇怪的,因为在正常的OAuth过程中,只有正确的应用程序才能从服务器获取访问令牌。但我甚至不认为Oauth2是为客户端公开的应用程序设计的,比如桌面、javascript等

有更好的方法吗?我做错什么了吗


谢谢

只要您通过https进行通信并且您的javascript是安全/稳定的,您就不应该有任何担心

否则,您将面临以下风险:

1) 通过XSS漏洞注入页面的代码窃取凭据

2) 具有读取数据包能力的窃听者可能会窃取凭证

3) 像“FaceNiff”这样的软件可以嗅探安全令牌,比如facebook和google,并允许他们使用任何连接到WIFI的用户帐户登录

4) 向可能故意或通过代表更多恶意代码而滥用这些特权的代码授予特权

基本上,在通过非安全线路时,您必须记住,授予访问令牌意味着给定用户有权在Facebook、Github、Google、您的平台等上执行操作a、B和C。现在,任何获取该令牌的人都有权在Facebook、Github、Google、您的平台上执行操作a、B和C,等作为相关用户

这使我们对OAuth标记背后的概念有了相当透彻的理解


如果您有任何问题,请告诉我

太好了!我已经在使用https了,因为Oauth2不像Oauth1那样提供加密。谢谢(顺便说一句,这是一篇优秀的文章)