在Chrome 20(或Chrome 19)中有一项功能(或错误 - 请参阅Chrome doesn't delete session cookies问题 - 可能issue 128513)。有一个选项“当我关闭浏览器时清除cookie和其他站点和插件数据” - 禁用;和“继续我离开的地方” - 启用。使用此类设置,即使关闭浏览器,Chrome也会保存会话Cookie(在浏览器关闭时标记为已删除)。甚至https(安全)cookie也将被保存。
(我再次检查Chrome已关闭,此处没有任何正在运行的Chrome)
所以,问题是:
Chrome如何在UserDir中保存此类仅限会话的Cookie(在所有用户设置的目录中,它就像firefox的个人资料一样)?我们假设chrome已关闭,我们可以完全访问UserDir和注册表。
存储cookie的地方?它们是SQLite还是其他ondisk格式?他们是否加密?
答案 0 :(得分:1)
Documents and Settings\USERNAME\Local Settings\Application Data\Google\Chrome\User Data\Default
Users\USERNAME\AppData\Local\Google\Chrome\User Data\Default
此文件位于SQLite数据库中(可以通过许多工具打开,例如sqlitebrowser.org/)。有表" cookies" (2015年4月,稳定的M42版本):
INTEGER creation_utc
TEXT host_key
TEXT name
TEXT value
TEXT path
INTEGER expires_utc
INTEGER secure
INTEGER httponly
INTEGER last_access_utc
INTEGER has_expires
INTEGER persistent
INTEGER priority
BLOB encrypted_value
"值"许多最近的cookie的文本字段是空的; cookie值存储在encrypted_value
BLOB中(我想,前段时间已切换到cookie的加密存储 - commited in February 2014,issue 313323 - 旧的cookie存储为未加密的,甚至是安全的存储。会话cookie也在文件中。
为(MAC)OS X和Windows启用加密:
加密所选操作系统上存储的所有Cookie。
作为保护私人用户信息的目标的一部分,这会使用特定于用户的加密API对操作系统上的cookie值进行加密,并且不会保护这些数据。
性能测试表明在Mac上每个cookie(不论大小)约为1毫秒,在Windows下为0.1毫秒到0.7毫秒(取决于大小)。这在较旧的硬件上会更高,但仍然无关紧要。
加密数据是二进制的(Windows上的开销为128字节),二进制数据必须存储在BLOB中,因此只有两个字段中的一个("值"或" encrypted_value" )将拥有另一个为空的数据。然而,这两个值都需要阅读和读取。在访问cookie时写入,因为它们被标记为"非null")。
溢出时有几种解密工具: *对于Windows:Encrypted cookies in Chrome *对于Linux和OS X:Decrypt Chrome Linux BLOB encrypted cookies in Python; Decrypting Chromium cookies
还有"当前会议"文件,当Chrome运行时使用0x534e5353 0x01(SNSS \ 0x01)魔法保护。有关格式的一些信息在这里:https://github.com/JRBANCEL/Chromagnon/wiki/Reverse-Engineering-SNSS-Format(source - chrome / browser / sessions / session_command.h)