http 网站如何防止针对基于令牌的身份验证的 MITM 攻击?
How do http-websites prevent MITM attack for token based authentication?
我是 Web 服务的新手,并从 What is token based authentication? 阅读了有关可与 Web 服务一起使用的基于令牌的身份验证。我在互联网上进行了搜索,但它非常令人困惑 基于 http 的网站 如何在没有任何安全漏洞的情况下设法进行基于令牌的身份验证。
我有什么意见?
我可以坐在服务器和客户端之间,通过嗅探流量以某种方式存储令牌,并在它过期之前滥用它。我错了吗?
EDIT
如 https://security.stackexchange.com/questions/46348/token-based-authentication-under-http 所述。
"Facebook uses an OAuth token passed as a cookie or HTTP header and
protected by HTTPS."
我该如何实现它,因为在这种情况下,网站将基于 http,并且只有 http-headers 将使用 https。如有不妥请指正
您的编辑表明您对 HTTPS 的作用存在误解。
从规范上讲,HTTP(意思是 "language" 在网络上使用,由 https://www.ietf.org/rfc/rfc2616.txt 定义)是基于文本的 "application level protocol",用于 TCP 套接字 (TCP作为 "transport level" 层)。
从这个意义上说,HTTP 和 HTTPS 是相同的 "language",它们没有什么不同。 HTTP 和 HTTPS 都是基于文本的 request/response 协议,每个协议都由 headers 和一个 body 组成,请求指定一个动词,例如 GET、POST、PUT、...没有任何区别。
HTTP 与 HTTPS 的不同之处在于,在此 HTTP "language"(应用程序级协议)下,HTTPS 使用使用 SSL 加密的 TCP 套接字或提供加密的 TLS 层。
由于 SSL/TLS 层发生在 在 HTTP 层之下,因此请求的 headers 发生的情况与请求的 headers 发生的情况没有区别body.
回到你的问题:
How can I implement this as in that case the website will be http-based and only http-headers will be using https. Please correct me if I am wrong.
您不能在单个 request/response 周期中只有 headers,而不是 body 使用 HTTPS。全有或全无。
结论是,根据您 link 的文章:只有令牌始终安全,基于令牌的身份验证才能安全。如果您始终使用 HTTPS(在所有 request/response 中),则可以保证(headers 和 body 都受到保护)。如果连一个请求或响应都没有通过 HTTPS 发送,那么您就有缺陷了。
我是 Web 服务的新手,并从 What is token based authentication? 阅读了有关可与 Web 服务一起使用的基于令牌的身份验证。我在互联网上进行了搜索,但它非常令人困惑 基于 http 的网站 如何在没有任何安全漏洞的情况下设法进行基于令牌的身份验证。
我有什么意见?
我可以坐在服务器和客户端之间,通过嗅探流量以某种方式存储令牌,并在它过期之前滥用它。我错了吗?
EDIT
如 https://security.stackexchange.com/questions/46348/token-based-authentication-under-http 所述。
"Facebook uses an OAuth token passed as a cookie or HTTP header and protected by HTTPS."
我该如何实现它,因为在这种情况下,网站将基于 http,并且只有 http-headers 将使用 https。如有不妥请指正
您的编辑表明您对 HTTPS 的作用存在误解。
从规范上讲,HTTP(意思是 "language" 在网络上使用,由 https://www.ietf.org/rfc/rfc2616.txt 定义)是基于文本的 "application level protocol",用于 TCP 套接字 (TCP作为 "transport level" 层)。
从这个意义上说,HTTP 和 HTTPS 是相同的 "language",它们没有什么不同。 HTTP 和 HTTPS 都是基于文本的 request/response 协议,每个协议都由 headers 和一个 body 组成,请求指定一个动词,例如 GET、POST、PUT、...没有任何区别。
HTTP 与 HTTPS 的不同之处在于,在此 HTTP "language"(应用程序级协议)下,HTTPS 使用使用 SSL 加密的 TCP 套接字或提供加密的 TLS 层。
由于 SSL/TLS 层发生在 在 HTTP 层之下,因此请求的 headers 发生的情况与请求的 headers 发生的情况没有区别body.
回到你的问题:
How can I implement this as in that case the website will be http-based and only http-headers will be using https. Please correct me if I am wrong.
您不能在单个 request/response 周期中只有 headers,而不是 body 使用 HTTPS。全有或全无。
结论是,根据您 link 的文章:只有令牌始终安全,基于令牌的身份验证才能安全。如果您始终使用 HTTPS(在所有 request/response 中),则可以保证(headers 和 body 都受到保护)。如果连一个请求或响应都没有通过 HTTPS 发送,那么您就有缺陷了。