[转]cookie的作用域
当我们给网站设置cookie时,大家有没有发现在网站的其他域名下也接收到了这些cookie。这些没用的cookie看似不占多少流量,但如果对一个日PV千万的站点来说,那浪费的资源就不是一点点了。因此在设置cookie时,对它的作用域一定要设置准确了。
我们都知道在PHP中用setcookie 来设置网站的cookie,该函数的用法如下:
今天我们就来探讨一下它的第五个参数$domain,因为它决定了cookie的作用域。
现在有如下3个域名,一个顶级域名、一个二级域名和一个三级域名:
① zydya.com
②blog.zyday.com
③one.blog.zyday.com
- 首先在①zyday.com域名下设置cookie,做四次测试,分别设置domain参数为空、'zyday.com'、'blog.zyday.com'与'one.blog.zyday.com'。
√表示该域名下能取到cookie,×表示不能取到cookie
domain参数 | zydya.com | blog.zyday.com | one.blog.zyday.com |
setcookie('name',1,time()+1) | √ | √ | √ |
setcookie('name',1,time()+1,'/','zyday.com') | √ | √ | √ |
setcookie('name',1,time() +1,'/','blog.zyday.com') |
× | × | × |
setcookie('name',1,time() +1,'/','one.blog.zyday.com') |
× | × | × |
当domain设置为空时,domain默认为当前域名,并且该域名下的子域名都可以接收到cookie。
但是domain参数设置其子域名时,所有域名就接收不到了,包括那个子域名。
- 然后在②blog.zyday.com域名下设置cookie,测试条件同上
domain参数 | zydya.com | blog.zyday.com | one.blog.zyday.com |
setcookie('name',1,time() +1) |
× | √ | √ |
setcookie('name',1,time()+1,'/','zyday.com') | √ | √ | √ |
setcookie('name',1,time()+1,'/','blog.zyday.com') | × | √ | √ |
setcookie('name',1,time()+1,'/',one.blog.zyday.com') | × | × | × |
看第二行,domain参数是zyday.com,是blog.zyday.com的父域名,那么zyday.com下所有子域名(包括zyday.com、blog.zyday.com、one.blog.zyday.com)都能接收到cookie。
当domain为自身域名时,那么其父域名不受影响,其本身与其子域名可以接收到cookie。
而设置其子域名或其他域名时,所有域名都接收不到cookie了。
- 最后在③one.blog.zyday.com域名下设置cookie
domain参数 | zydya.com | blog.zyday.com | one.blog.zyday.com |
setcookie('name',1,time() +1) |
× | × | √ |
setcookie('name',1,time()+1,'/','zyday.com') | √ | √ | √ |
setcookie('name',1,time()+1,'/','blog.zyday.com') | × | √ | √ |
setcookie('name',1,time()+1,'/',one.blog.zyday.com') | × | × | √ |
第三个测试得出的结论在上面已经总结了。再看一遍,这里就不多解释了。
domain的设置,有两点要注意:
1.在setcookie中省略domain参数,那么domain默认为当前域名。
2.domain参数可以设置父域名以及自身,但不能设置其它域名,包括子域名,否则cookie不起作用。
那么cookie的作用域:
cookie的作用域是domain本身以及domain下的所有子域名。
补充:
Path默认值为”/”,表示该Cookie在整个站点内有效。除定义的Cookie要在全站作用页面使用的情况外,其他定义的Cookie要指定其Path属性,遵循作用域最小原则,如:定义Cookie的Path值为”/Shoes”,表示该Cookie在Shoes目录下的所有页面会向服务回复该Cookie信息
domain为空,则为当前域名
相关推荐
然而,设置Cookie作用域时还需要考虑一些安全和隐私问题。由于共享Cookie,一旦被攻击者获取,他可能能够访问用户在所有关联子域名下的信息。因此,确保Cookie的安全传输(例如,使用HTTPS)和设置合理的过期时间是...
如果在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无法读取到Cookie信息,这样能有效的防止XSS攻击。 对于以上两个属性, 首先,secure属性是防止信息在传递的过程中被监听捕获后信息泄漏,...
#### 二、理解Cookie作用域 Cookie的作用域定义了Cookie可以在哪些页面或路径上被访问到。在PHP中,可以通过`setcookie()`函数来设置Cookie。该函数的基本语法为: ```php setcookie("name", "value", time()+3600...
4. **限制Cookie作用域**:限制Cookie的有效路径和域名,防止跨站Cookie攻击。 5. **及时更新与修复**:定期更新服务器软件,修补已知的安全漏洞。 了解和防范Cookie注入攻击对于保障Web应用的安全至关重要。开发者...
domain: 'example.com', // 设置Cookie作用域为example.com secure: true // 只在HTTPS协议下发送Cookie }); ``` ### 6. 应用场景 Cookie.js在许多场景下大有裨益,例如: - **用户偏好设置**:存储用户的界面...
3. **限制Cookie作用域**:设置Cookie为“仅限站点”,防止跨站脚本攻击(XSS)。 4. **定期刷新Cookie**:即使Cookie被盗,也能在一定时间内过期,增加安全性。 总的来说,Cookie自动登录是通过.NET框架结合...
JSP 九个内置对象及四个作用域 JSP(Java Server Pages)是一种基于Java的服务器端脚本语言,用于生成动态网页。在JSP中,九个内置对象是指不需要预先声明就可以在脚本代码和表达式中使用的对象,这些对象都是javax...
变量的作用域是由它们的定义位置决定的,通常分为局部作用域和全局作用域两大类。 局部变量是指在函数内部定义的变量,它只在该函数内部可见,即只能在定义它的函数内部被访问。一旦函数执行完毕,局部变量就会被...
**作用域和保存时间:**只对该用户的浏览器有效,可以通过设置过期时间来控制 Cookie 的生存周期。 **应用范围:**适合存储简单的个性化信息。 **保存位置:**客户端(浏览器)。 示例代码: ```csharp // 设置 ...
【session 作用域】在Java Web开发中,session是一个至关重要的概念,它是HTTP协议无状态特性的补充,用于在客户端浏览器和服务器之间维持状态信息。简单来说,session就是服务器为每个用户浏览器创建的一个数据存储...
例如,可以指定Cookie的作用域仅限于特定的URL路径: ```javascript $.cookie('the_cookie', 'the_value', { path: '/myPath' }); ``` 或者,如果需要使Cookie在整个站点可用,可以设置域: ```javascript $.cookie...
这个方法会删除指定名称的Cookie,`path`参数与设置Cookie时相同,确保在正确的作用域内删除。 jQuery Cookie还支持JSON数据类型,允许我们存储和读取结构化的数据。例如: ```javascript // 设置一个JSON格式的...
此外,`$.cookie()`方法还支持其他选项,如`path`(指定Cookie的作用路径,默认为当前页面路径)、`domain`(指定Cookie作用的域名)、`expires`(设置Cookie的过期日期,默认为浏览器会话结束时失效),以及`secure...
// 设置Cookie的作用域,即只能在哪个域名下访问 cookie.setPath("/"); // 默认值,整个域名 // 将Cookie添加到响应中 response.addCookie(cookie); ``` 当服务器收到请求时,可以通过`HttpServletRequest`的`get...
- 也可以设置Cookie的作用域,即路径(path)和域名(domain)。默认情况下,Cookie只对当前路径有效。 6. **访问计数器的实现**: - 在这个实例中,每次用户访问页面,服务器会检查请求中是否存在名为"counter...
### Cookie攻击概述 在网络安全领域,Cookie攻击是一种常见的攻击手段,通过操纵用户的Cookie来实现对网站功能...通过加强对用户输入的验证、限制Cookie的作用域以及采用安全的编码实践等手段,可以有效抵御这类攻击。
3. 指定Cookie的作用路径:`cookie.setPath("/")`,默认是当前请求的路径。 4. 将Cookie添加到响应中:`response.addCookie(cookie)`。 **三、Cookie的读取** 读取Cookie主要通过HttpServletRequest的`getCookies()...