我正在设计一个API,因此正在寻找解决方案来保护它。 我碰到了这篇文章:https://github.com/alexbilbie/alexbilbie.github.com/blob/master/_posts/2014-11-11-oauth-and-javascript.md
这很老,但我认为它仍然有意义。但是,有些事情我不太了解,因为我对此还很陌生。
在那家伙写的文章中,他保存并使用访问令牌从客户端直接调用API(这是不安全的,因为没有办法很好地保护访问令牌),他建立了一个代理来保存令牌,然后为客户端发出加密的cookie。
我真的不明白为什么这种方式更安全。在这两种情况下,一旦攻击者窃取了访问令牌或cookie,就完成了。是不是
我想念什么吗?
非常感谢您。
答案 0 :(得分:0)
让代理充当依赖方并在其中隐藏访问令牌也没有太大好处。
即使代理将加密的cookie发送给客户端,这些cookie仍将链接到域,并随对该域的任何请求一起发送。因此,如果用户的浏览器中运行着恶意应用程序,并且该应用程序调用了受保护的API,则当登录到合法应用程序时,它将能够背负cookie集。
(对于长时间会话持续数小时或数天或更长时间的应用程序,这甚至是一个问题。)
我从这种方法中看到的唯一次要好处是:
如果您想保护客户端上的访问令牌,我建议一种更安全的方法是将其作为变量存储在您的应用程序中(即在内存中),而不是将其持久化到本地或会话存储中。这样就可以阻止JavaScript被另一个应用程序访问,并且完全可以控制何时将访问令牌提交给API,这与浏览器透明处理的cookie不同。