如何限制对我保存在cookie中的字符串的访问?

时间:2015-04-26 04:35:13

标签: javascript cookies

如果我的网站使用document.cookie将字符串写入cookie,那么任何网站都能读取这些字符串或只读取创建它的字符串吗?如果有人可以阅读它是否有办法限制对字符串的访问?这是javascript中的一个问题 编辑:如果第三方读取我的Cookie,他就不能编辑/删除它,我没有太多问题。黑客能做到吗?

4 个答案:

答案 0 :(得分:1)

只有同一个域(即http://thisisasubdomain.domain.com)才能读取cookie;没有办法为不同的站点请求cookie(当然,除了安全漏洞,哪些浏览器总是试图修补)。请注意,浏览器的用户可以读取cookie,因此请不要在其中放置任何意图保密的来自用户,就像重要的解密密钥一样。

答案 1 :(得分:0)

无法保证阻止其他人访问Cookie。所以,如果数据是敏感的,那么在服务器端处理它并且不存储在cookie中是个好主意

答案 2 :(得分:0)

HTTP是无状态协议,cookie的概念出现,以便在多个网页中保持用户会话的完整性。也就是说,Cookie数据与创建它的网站的域名相关联,使其只能访问该网站。 Cookie的服务由浏览器实现,唯一可能影响的安全威胁是

  • 浏览器对cookie的错误实现:这是所有浏览器安全测试中相当常见的测试用例,所以并不是那么常见。
  • DNS中毒:这可以通过模仿实际创建cookie的网站来实现。使用HTTPS,可以轻松克服。

关于Cookies的维基百科文章是不言自明的,提到了访问/窃取cookie数据的可能方式列表here.

答案 3 :(得分:0)

在浏览器中,a.com上创建的Cookie仅适用于a.com上的其他网页。其他域中的页面无法访问它。这是一个非常具体的cookie设计原则。创建cookie时,您可以单独控制cookie是否也有路径限制(只能通过a.com上的某些页面访问)。

您还可以控制子域是否可以访问您的cookie,例如sub.a.com。有关子域访问的详细信息,请参阅this answer

同样,cookie只会发送到服务器a.com,而不会发送到任何其他服务器。但是,如果您不使用https,那么您应该知道每次向a.com提出请求时,都会通过网络以纯文本传输cookie。

Cookie数据本身由浏览器存储在用户的本地硬盘驱动器上,因此可以从浏览器外部(通过本地应用程序,而不是从浏览器内)访问coookie,具体取决于浏览器和操作系统的实现。如果你真的不希望外部代理能够获取数据,那么(正如其他人所说),只保留服务器上的数据。