如何保护 XSS 和 CSRF 之外的访问令牌
How to secure access token beyond XSS and CSRF
我了解使用网络存储的 XSS 漏洞和使用 cookie 的 CSRF 漏洞。所以我将访问令牌存储在内存中,为了持久化,我在 cookie 中有一个刷新令牌,当我们丢失它时,我用它来静默刷新我的访问令牌。我对 XSS 和 CSRF 威胁感觉好多了... 但是我们如何从数据包嗅探器中保护令牌?数据包嗅探器会在请求中找到令牌。 我看到很多关于 XSS 和 CSRF 的讨论,但我们如何保护数据包嗅探器的安全,是否还有更多我们不常考虑的威胁?
您使用 HTTPS 来防御数据包嗅探器。
Fiddler 作为代理将无法解密云中的 HTTPS 流量,除非将内置根证书的 fiddler 添加到发出请求的浏览器或客户端。
Fiddler 能够解密 HTTPS,因为您已将 Fiddler 根证书添加到计算机中的受信任存储区。否则无法建立正确的 HTTPS 连接。
所以,不用担心云端的 Fidler。
https 提供端到端加密。它由浏览器在应用程序级别实现,因此同一网络上的其他用户不会破坏 https 安全性。
下面是对 ssl 和 https(http over ssl)工作原理的简短说明
SSL:
关键思想是,从数学上讲,您可以生成 public 密钥 A 和私钥 B,如果您使用 A 加密某些内容,则只能使用 B 对其进行解密。
所以假设服务器 google 有一对 public 密钥 A 和私钥 B。
客户想要发送一些数据到 google。这个想法是,如果客户端有密钥 B,他可以加密他想发送的数据,他不再关心网络威胁,例如中间人钓鱼数据包或数据,因为只有密钥 B 的所有者(google) 可以解密数据。所以中间人只会有没有用的加密数据。
请注意,从上面可以清楚地看出,服务器(google 此处)应保持其私钥不共享,但应分发其 public 密钥,以便客户端可以安全地(加密)与服务器通信。
如何分发 public 密钥?
使用 public 密钥基础设施 (PKI),它是一组用于管理和分发 public 密钥的角色、实体、定义等。
简而言之,服务器从证书颁发机构 (CA) 请求证书。该证书包含有关服务器的信息(名称、IP 等)以及为该服务器生成的 public 密钥和私钥(注意这里有几个过程,服务器可能会请求生成密钥,其中之一是服务器生成私钥,CA 只负责生成 public 密钥)。
最后,浏览器内置了一个可信CA列表,这样chrome这些浏览器就可以去获取google的public密钥A,并用它来加密要发送到 google.
的数据
以上是ssl通信协议(ssl证书)的工作原理。 SSL 只是一种提供安全通信的协议。它不提供路由和网络功能。
https:
Https 基本上是 HTTP 连接,它提供使用 SSL 保护的数据。
这意味着 SSL 加密数据将使用 HTTP 等协议进行路由以进行通信。
我了解使用网络存储的 XSS 漏洞和使用 cookie 的 CSRF 漏洞。所以我将访问令牌存储在内存中,为了持久化,我在 cookie 中有一个刷新令牌,当我们丢失它时,我用它来静默刷新我的访问令牌。我对 XSS 和 CSRF 威胁感觉好多了... 但是我们如何从数据包嗅探器中保护令牌?数据包嗅探器会在请求中找到令牌。 我看到很多关于 XSS 和 CSRF 的讨论,但我们如何保护数据包嗅探器的安全,是否还有更多我们不常考虑的威胁?
您使用 HTTPS 来防御数据包嗅探器。
Fiddler 作为代理将无法解密云中的 HTTPS 流量,除非将内置根证书的 fiddler 添加到发出请求的浏览器或客户端。
Fiddler 能够解密 HTTPS,因为您已将 Fiddler 根证书添加到计算机中的受信任存储区。否则无法建立正确的 HTTPS 连接。
所以,不用担心云端的 Fidler。
https 提供端到端加密。它由浏览器在应用程序级别实现,因此同一网络上的其他用户不会破坏 https 安全性。
下面是对 ssl 和 https(http over ssl)工作原理的简短说明
SSL:
关键思想是,从数学上讲,您可以生成 public 密钥 A 和私钥 B,如果您使用 A 加密某些内容,则只能使用 B 对其进行解密。 所以假设服务器 google 有一对 public 密钥 A 和私钥 B。 客户想要发送一些数据到 google。这个想法是,如果客户端有密钥 B,他可以加密他想发送的数据,他不再关心网络威胁,例如中间人钓鱼数据包或数据,因为只有密钥 B 的所有者(google) 可以解密数据。所以中间人只会有没有用的加密数据。 请注意,从上面可以清楚地看出,服务器(google 此处)应保持其私钥不共享,但应分发其 public 密钥,以便客户端可以安全地(加密)与服务器通信。
如何分发 public 密钥?
使用 public 密钥基础设施 (PKI),它是一组用于管理和分发 public 密钥的角色、实体、定义等。
简而言之,服务器从证书颁发机构 (CA) 请求证书。该证书包含有关服务器的信息(名称、IP 等)以及为该服务器生成的 public 密钥和私钥(注意这里有几个过程,服务器可能会请求生成密钥,其中之一是服务器生成私钥,CA 只负责生成 public 密钥)。
最后,浏览器内置了一个可信CA列表,这样chrome这些浏览器就可以去获取google的public密钥A,并用它来加密要发送到 google.
的数据以上是ssl通信协议(ssl证书)的工作原理。 SSL 只是一种提供安全通信的协议。它不提供路由和网络功能。
https:
Https 基本上是 HTTP 连接,它提供使用 SSL 保护的数据。 这意味着 SSL 加密数据将使用 HTTP 等协议进行路由以进行通信。