V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
tanteng
V2EX  ›  JavaScript

js 设置的 cookie php 可以读吧?反过来亦然

  •  
  •   tanteng · 2015-04-07 23:28:35 +08:00 · 2370 次点击
    这是一个创建于 3510 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,没试过,感觉理论上可以,谁讲一下这个问题

    7 条回复    2015-04-08 11:13:14 +08:00
    kchum
        1
    kchum  
       2015-04-07 23:46:58 +08:00
    试一下都出来了,可以。。
    h4x3rotab
        2
    h4x3rotab  
       2015-04-08 00:16:06 +08:00   ❤️ 1
    问题不在于能否互相访问,而是理解其中原理。php是运行在服务器端的,他的唯一作用就是接受http请求,执行php脚本,生成html页面,回复给浏览器。浏览器收到了服务器发来的html页面之后会呈现出来,同时也会执行js脚本。

    那么cookies是怎么同步的?浏览器内每一个域名都会保存一些cookies,值是由你设定的,js可以对浏览器内的cookies读写访问。但是呢,每一次浏览器访问服务器的时候,php都会接收到一个http请求,这个请求内会包含浏览器内存储的cookies,所以说php在生成html页面的时候,也可以取得用户这边的cookies。在php生成html页面的时候,同时会生成一段http响应,响应中就包含了一个叫Set-cookie的属性,浏览器收到这个响应就会去修改内部的cookies。

    所以说本身cookies是只存在于浏览器的一段文本,可以由js访问。只有在发生http请求的时候,这段cookies才会传递给服务器,伺候服务器也可以返回Set-cookie来修改浏览器的cookies。这不能叫做互相读取,而是一种传递机制。
    ine181x
        3
    ine181x  
       2015-04-08 00:16:09 +08:00 via iPhone
    服务器端可以设置httponly的cookie,js不能访问
    NewYear
        4
    NewYear  
       2015-04-08 00:21:52 +08:00   ❤️ 1
    错错错!!!!

    至少不完全正确,Cookie有一个属性叫httponly,说简单点就是不是服务器专用。JS想读取到!做梦!在IE6上面都是做梦!读都读不到,还想操(作),就是做梦!

    比如常见的维持session会话用的cookie phpsessionid,aspsessionid。

    所以很多讲XSS偷cookie的,都喜欢说可以偷走这个会话id,其实是偷不走的。除非程序员傻了,直接用cookie验证而不是用sessionid,用cookie也就算了,竟然不打httponly标记!
    NewYear
        5
    NewYear  
       2015-04-08 00:26:11 +08:00
    @kchum cookie有httponly属性的读取不了。通常服务器用来维持session会话的sessionid就是httponly的,那些说漏洞的老是喜欢说XSS漏洞可以偷走这个sessionid,其实是偷不走的

    @h4x3rotab @ine181x 一看就是和我一样的RSS用户,回复时间几乎一致,而我是打字慢花掉了时间
    NewYear
        6
    NewYear  
       2015-04-08 00:31:16 +08:00
    顺便说明下,对此怀疑又想测试又怕麻烦的,请移步google首页,从隐私模式打开,看开发者工具,可以很明显的看到有2个cookie,一个就打了httponly标记,所以js只能读取到其中一个,不能读另一个,顺便送上读取全部cookie的js代码
    document.cookie
    kchum
        7
    kchum  
       2015-04-08 11:13:14 +08:00
    @NewYear 学习,谢谢。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2172 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:31 · PVG 08:31 · LAX 16:31 · JFK 19:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.