cookie 的使用及其安全性
The use of cookies and their security
背景
你们可能都知道:Cookie 是存储在用户计算机上的小文件。它们旨在保存特定于特定客户端和网站的适量数据,并且可以通过 Web 服务器或客户端计算机访问。
这些知识让我对 cookie 的安全性感到疑惑,并给了我几个问题
我的问题
- Cookie 是否默认加密
- 如果不是,我将如何加密我的 cookies
- 除了以上几点,当我使用 SSL 时 cookie 是否加密
因为我是一名 PHP 开发人员,所以以上问题都关注 PHP。
Are Cookies encrypted by default
没有
If they are not, how would I go about encrypting my cookies
如果你想对用户隐藏信息。首先不要把它放在 cookie 中。将其保存在服务器上。 (并放置一个令牌,您可以使用该令牌在 cookie 中检索正确的信息)。
如果你想对第三方攻击者隐藏信息。使用 SSL。
Above points aside, are cookies encrypted when I am using SSL
当您使用 SSL 时,服务器和客户端之间(双向)传输的所有内容都会被加密。
- Are Cookies encrypted by default
不,无论您为它们设置什么值,cookie 都会以明文形式发送。
- If they are not, how would I go about encrypting my cookies
加密 key/value 对或加密它们以在浏览器和用户之间安全传递?
对于后者,使用 TLS(与 SSL 相同)。对于前者,您应该考虑为什么要加密它们 - 如果您自己加密它们,通常不需要将它们发送到浏览器。
- Above points aside, are cookies encrypted when I am using SSL
是的,它们在传输过程中被加密。但是,除非您设置 Secure Flag,否则如果用户访问您网站的 http://
版本,cookie 将以未加密的方式传输。
例如如果您在 https://www.example.com
上设置 cookie,然后用户浏览,或跟随 link 到 http://www.example.com
,则 cookie 将以明文形式发送。攻击者还可以通过 MITM 连接到另一个站点然后将 <img src="http://www.example.com/foo.bar" />
注入页面导致浏览器连接到您的站点并发送所有 cookie 来强制泄露 cookie。
这就是为什么如果您希望 cookie 仅为 HTTPS,建议始终设置安全标志。
背景
你们可能都知道:Cookie 是存储在用户计算机上的小文件。它们旨在保存特定于特定客户端和网站的适量数据,并且可以通过 Web 服务器或客户端计算机访问。
这些知识让我对 cookie 的安全性感到疑惑,并给了我几个问题
我的问题
- Cookie 是否默认加密
- 如果不是,我将如何加密我的 cookies
- 除了以上几点,当我使用 SSL 时 cookie 是否加密
因为我是一名 PHP 开发人员,所以以上问题都关注 PHP。
Are Cookies encrypted by default
没有
If they are not, how would I go about encrypting my cookies
如果你想对用户隐藏信息。首先不要把它放在 cookie 中。将其保存在服务器上。 (并放置一个令牌,您可以使用该令牌在 cookie 中检索正确的信息)。
如果你想对第三方攻击者隐藏信息。使用 SSL。
Above points aside, are cookies encrypted when I am using SSL
当您使用 SSL 时,服务器和客户端之间(双向)传输的所有内容都会被加密。
- Are Cookies encrypted by default
不,无论您为它们设置什么值,cookie 都会以明文形式发送。
- If they are not, how would I go about encrypting my cookies
加密 key/value 对或加密它们以在浏览器和用户之间安全传递?
对于后者,使用 TLS(与 SSL 相同)。对于前者,您应该考虑为什么要加密它们 - 如果您自己加密它们,通常不需要将它们发送到浏览器。
- Above points aside, are cookies encrypted when I am using SSL
是的,它们在传输过程中被加密。但是,除非您设置 Secure Flag,否则如果用户访问您网站的 http://
版本,cookie 将以未加密的方式传输。
例如如果您在 https://www.example.com
上设置 cookie,然后用户浏览,或跟随 link 到 http://www.example.com
,则 cookie 将以明文形式发送。攻击者还可以通过 MITM 连接到另一个站点然后将 <img src="http://www.example.com/foo.bar" />
注入页面导致浏览器连接到您的站点并发送所有 cookie 来强制泄露 cookie。
这就是为什么如果您希望 cookie 仅为 HTTPS,建议始终设置安全标志。