HTTP Cookie

news/2024/5/18 14:29:38 标签: http, cookie
http://www.w3.org/2000/svg" style="display: none;">

http cookie :是服务器发送发送到用户浏览器并保存在本地一小块数据,浏览器会在下次向同一服务器发起请求时被携带并发送到服务器。数据一般是用户的登陆状态。

Cookie 主要用于以下三个方面:
1.会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)
2.个性化设置(如用户自定义设置、主题等)
3.浏览器行为跟踪(如跟踪分析用户行为等)
4.Cookie 曾一度用于客户端数据的存储,因当时并没有其它合适的存储办法而作为唯一的存储手段,但现在随着现代浏览器开始支持各种各样的存储方式,Cookie 渐渐被淘汰。由于服务器指定 Cookie 后,浏览器的每次请求都会携带 Cookie 数据,会带来额外的性能开销(尤其是在移动环境下)。新的浏览器API已经允许开发者直接将数据存储到本地,如使用 Web storage API (本地存储和会话存储)或 IndexedDB 。

创建Cookie:当服务器收到 HTTP 请求时,服务器可以在响应头里面添加一个 Set-Cookie 选项,Cookie 的过期时间、域、路径、有效期、适用站点都可以根据需要来指定。。

定义cookie的生命周期:Expires-过期时间、Max-Age-有效期
Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT;

限制访问Cookie:Secure属性、HttpOnly属性
被标记了Secure属性的Cookie只应通过HTTPS协议加密过的请求发送给服务器。
JavaScript Document.cookie API 无法访问带有 HttpOnly 属性的cookie;此类 Cookie 仅作用于服务器。

Cookie的作用域:Domain\Path标识定义了Cookie的作用域,允许Cookie应该发送给哪些URL。
Domain:Domain 指定了哪些主机可以接受 Cookie。如果不指定,默认为 origin,不包含子域名。
Path 属性:Path 标识指定了主机下的哪些路径可以接受 Cookie(该 URL 路径必须存在于请求 URL 中)。以字符 %x2F ("/") 作为路径分隔符,子路径也会被匹配。
SameSite attribute:SameSite Cookie 允许服务器要求某个 cookie 在跨站请求时不会被发送,(其中 Site (en-US) 由可注册域定义),从而可以阻止跨站请求伪造攻击(CSRF)。

JavaScript 通过 Document.cookie 访问 Cookie
通过 Document.cookie 属性可创建新的 Cookie,也可通过该属性访问非HttpOnly标记的Cookie,通过 JavaScript 创建的 Cookie 不能包含 HttpOnly 标志。

document.cookie = "yummy_cookie=choco";
document.cookie = "tasty_cookie=strawberry";
console.log(document.cookie);
// logs "yummy_cookie=choco; tasty_cookie=strawberry"

xss攻击:Cross Site Scripting,跨站脚本攻击,攻击者利用嵌入恶意代码到用户访问的页面中。
1、盗用cookie,获取敏感信息。
2、利用植入Flash,通过crossdomain权限设置进一步获取更高权限;或者利用Java等得到类似的操作。
3、利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作。
4、利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。
5、在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DDoS攻击的效果。

csrf攻击:Cross-Site request forgery。跨站请求伪造,攻击者并不能通过CSRF攻击来直接获取用户的账户控制权,也不能直接窃取用户的任何信息。他们能做到的,是欺骗用户浏览器,让其以用户的名义运行操作。


http://www.niftyadmin.cn/n/724509.html

相关文章

C6000代码层面优化(一)

2014年8月7日,看了一片很长见识的博文,关于DSP如何优化的,有一个问题没有搞通,“百度”一下关键字,居然搜查了一模一样的博文N片,现在也搞不懂这篇博文的原创作者是谁了。反正我感觉直接转摘过去&#xff0…

RPG的错排

RPG的错排 Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submission(s) : 25 Accepted Submission(s) : 14 Problem Description今年暑假杭电ACM集训队第一次组成女生队,其中有一队叫RPG,但做为集训队成员之一的野骆驼竟然不知道…

《C语言编写 学生成绩管理系统》

/* (程序头部凝视開始) * 程序的版权和版本号声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名: 学生成绩管理系统 * 作 者: 刘江波 * 完毕日期: 2012 年 6 月 23 日 * 版 本 号: v.62…

es6的set、map

ES6加入Set和Map是为了弥补ES5单集合类型的缺点,为了进行非数值类型的索引。 Set:不包含重复值的列表。 Map:键值对的集合。 ES5有模拟set、map的使用,但是存在弊端: 1.如果存在一个数值键5和一个字符键5,在…

java数据库连接池

数据库连接池在编写应用服务是经常需要用到的模块,太过频繁的连接数据库对服务性能来讲是一个瓶颈,使用缓冲池技术可以来消除这个瓶颈。我们可以在互联网上找到很多关于数据库连接池的源程序,但是都发现这样一个共同的问题:这些连…

关于“构造函数”中的几个小问题,也许面试会问到哦~

构造函数这玩意也是面试官经常会问到的东西,我们知道一个类的状态初始化就全靠它了,下面提几个小问题。 Q:我看到Web项目里面通常都有一个BasePage页面,其中构造函数里面做了权限验证, 请问为什么要这么做。 A: 既然这…

eval

eval():可以解释运行js源代码组成的字符串,并产生一个值。 eval()是一个函数还是一个运算符 eval()只有一个参数,如果传入的参数不是字符串,它直接返回这个参…

1和0的思考:人生的三种境界

成功的人生,首先要找到做人做事的起点,我们可以把这个起点称之为“1”。这个“1”,包括经济意义上的“1”和社会意义上的“1”。经济意义上的“1”,就是俗称的“第一桶金”,是干干净净、结结实实的本钱。社会意义上的“…