-1

我是 Web 服务的新手,并从什么是基于令牌的身份验证中阅读了可与 Web 服务一起使用的基于令牌的身份验证?. 我在互联网上进行了搜索,但是基于 http 的网站如何设法在没有任何安全漏洞的情况下进行基于令牌的身份验证,这非常令人困惑。

我有什么观点?

我可以坐在服务器和客户端之间,通过嗅探流量以某种方式存储令牌,并在它过期之前滥用它。我在这里错了吗?

EDIT

https://security.stackexchange.com/questions/46348/token-based-authentication-under-http中所述。

“Facebook 使用 OAuth 令牌作为 cookie 或 HTTP 标头传递并受 HTTPS 保护。”

我该如何实现这一点,因为在这种情况下,网站将基于 http,并且只有 http-headers 将使用 https。如果我错了,请纠正我。

4

1 回答 1

2

您的编辑表明对 HTTPS 的作用存在误解。

规范地说,HTTP(意思是网络上所说的“语言”,由https://www.ietf.org/rfc/rfc2616.txt定义)是基于文本的“应用程序级协议”,在 TCP 上使用套接字(TCP 是“传输层”层)。

从这个意义上说,HTTP 和 HTTPS 是同一种“语言”,它们没有什么不同。HTTP 和 HTTPS 都是基于文本的请求/响应协议,每个协议都由 headers 和 body 组成,请求指定一个动词,例如 GET、POST、PUT,...... 没有任何区别。

HTTP 与 HTTPS的不同之处在于,在这种 HTTP “语言”(应用程序级协议)下,HTTPS 使用 TCP 套接字,这些套接字使用提供加密的 SSL 或 TLS 层进行加密。

由于 SSL/TLS 层发生HTTP 层之下,因此请求标头发生的情况与正文发生的情况之间没有区别。

回到你的问题:

我该如何实现这一点,因为在这种情况下,网站将基于 http,并且只有 http-headers 将使用 https。如果我错了,请纠正我。

在单个请求/响应周期中,您不能只有标头,而不是使用 HTTPS 的正文。要么全有,要么全无。

结论是,根据您链接到的文章:基于令牌的身份验证只有在令牌始终受到保护的情况下才是安全的。如果您始终使用 HTTPS(在所有请求/响应中),则可以保证(标头和正文都受到保护)。如果连一个请求或响应都没有通过 HTTPS 发送,那么您就有缺陷了。

于 2015-10-08T20:43:27.797 回答