美文网首页程序员
关于cookie的同源策略及绕过(跨域)

关于cookie的同源策略及绕过(跨域)

作者: 魔力小小鸟 | 来源:发表于2017-11-04 04:14 被阅读506次

说明:大致的域名/目录结构:

molibird.com -- molibird.com/index.php
a.molibird.com -- a.molibird.com/index.php
b.molibird.com -- b.molibird.com/index.php

一:cookie的"同源策略"和一般的同源策略 区别:

一般的同源策略:需要满足:协议 域名 端口
cookie的"同源策略":仅仅关注 域名

二:cookie的domain属性:

domain决定了 访问页面的时候 哪些cookie是需要发送/可以保存
domain默认值为当前域名

表格:横向是domain的属性值,纵向是请求的网页/域名

域\cookie.domain molibird.com .molibird.com a.molibird.com b.molibird.com
molibird.com/index.php 可以 可以 X X
a.molibird.com/index.php X 可以 可以 X
b.molibird.com/index.php X 可以 X 可以

三:绕过限制:

即 设置cookie时 指定具体需要的domain(不用默认值):

设置domain的要求:

(1)父域名
(2)"子"域名:所有子域名 包括 自己
注意:
无法修改到.com这类顶级域名
无法修改到 具体的子域名 比如 molibird.com 修改到 a.molibird.com
无法修改到"同级域名" 比如 a.molibird.com 修改到 b.molibird.com 是不行的

设置方法一:php -- setCookie():

例子:molibird.com/index.php

setCookie("key", "value");  //默认情况 domain = "molibird.com"
setCookie("key", "value", time()+3600, '/', 'molibird.com');  //domain = "molibird.com"
setCookie("key", "value", time()+3600, '/', '.molibird.com');  //domain = ".molibird.com"
//setCookie("key", "value", time()+3600, '/', '.com');  //无效 不可以设置顶级域名
//setCookie("key", "value", time()+3600, '/', 'a.molibird.com');  //无效 不可以设置 具体的子域名

例子:a.molibird.com/index.php

setCookie("key", "value");  //默认情况 domain = "a.molibird.com"
setCookie("key", "value", time()+3600, '/', 'molibird.com');  //domain = "molibird.com"
setCookie("key", "value", time()+3600, '/', '.molibird.com');  //domain = ".molibird.com"
//setCookie("key", "value", time()+3600, '/', 'b.molibird.com');  //无效 不可以设置 "同级域名"

设置方法二:js -- document.cookie

例子:molibird.com/index.php

document.cookie = "key=value;";  //默认值 domain = "molibird.ocm"
document.cookie = "key=value; domain=molibird.com;";  //domain = ".molibird.ocm"
document.cookie = "key=value; domain=.molibird.com;";  //domain = ".molibird.ocm"
//document.cookie = "key=value; domain=a.molibird.com;";  //无效 不可以设置 具体子域名

例子:a.molibird.com/index.php

document.cookie = "key=value;";  //默认值 domain = "a.molibird.ocm"
document.cookie = "key=value; domain=molibird.com;";  //domain = ".molibird.ocm"
document.cookie = "key=value; domain=.molibird.com;";  //domain = ".molibird.ocm"
//document.cookie = "key=value; domain=b.molibird.com;";  //无效 不可以设置 "同级域名"

注意:先设置 document.domain 再设置 document.cookie 不会起作用:

例子:a.molibird.com/index.php

document.domain = 'molibird.com';
document.cookie = "key=value";  //domain = "a.molibird.com"  不会因为前面的设置而变化

四:关于php和js修改的区别:

php设置的cookie 会直接在 http响应头 Set-Cookie: 中出现
而js设置的不会在响应中出现

相关文章

  • 关于cookie的同源策略及绕过(跨域)

    说明:大致的域名/目录结构: molibird.com -- molibird.com/index.phpa.m...

  • 同源策略及跨域访问方案

    同源与跨域 浏览器同源策略 允许跨源访问使用CORS: 是HTTP的一部分 如何解决跨域读取Cookie二级域名不...

  • H5跨域访问

    跨域访问是源于浏览器的同源策略而引申出来的概念 1、先了解什么是同源策略和跨域访问 同源策略、跨域解决方案 - R...

  • H5 知识点 - 收藏集 - 掘金

    跨域解决方案总结 - 前端 - 掘金为什么需要跨域? 就得先知道同源策略. 同源策略 同源策略是为了保证数据的安全...

  • 通过script标签实现跨域

    跨域 什么是跨域? 跨域问题是由于javascript语言安全限制中的同源策略造成的。同源策略是由Netscape...

  • 跨域

    关于跨域 什么是同源策略? 同源策略/SOP(Same origin policy)是一种约定,由 Netscap...

  • 同源策略,跨域请求处理

    跨域访问 - 跨域请求 同源策略 适用于浏览器的一种资源访问策略;同源策略(Same origin policy)...

  • 无星的Egg之旅(一)——跨域

    先说点老生常谈的问题 啥是跨域 1.同源策略 要了解跨域,先要说说同源策略。同源策略是由 Netscape 公司提...

  • 前端基础(问答23)

    keywords: 同源策略、跨域、jsonp。 什么是同源策略(same origin policy) 同源:协...

  • 有关跨域的相关问题和方法

    跨域是什么 同源策略 在讲解什么是跨域之前先要清楚什么是同源策略,“同源政策”(same-origin polic...

网友评论

    本文标题:关于cookie的同源策略及绕过(跨域)

    本文链接:https://www.haomeiwen.com/subject/xbxfmxtx.html