标签:span rust firefox 阶段 str ash line name 资源
1)帮助管理用户会话信息(用户需要记录的信息:登陆状态等)
2)跟踪浏览器的行为
3)用户自定义设置
当用户浏览带有Cookie的网站时,网站自动为其生成一个唯一的标志符号,并且在后端数据库里以其为索引添加一项(这样就能记录用户信息了),用户收到这个信息后,在之后请求阶段都带上这个头部!官方描述如下:
当服务器收到HTTP请求时,服务器可以在响应头里面添加一个Set-Cookie
选项。浏览器收到响应后通常会保存下Cookie,之后对该服务器每一次请求中都通过Cookie
请求头部将Cookie信息发送给服务器。另外,Cookie的过期时间、域、路径、有效期、适用站点都可以根据需要来指定
会话期Cookie
是最简单的Cookie:浏览器关闭之后它会被自动删除,也就是说它仅在会话期内有效。会话期Cookie不需要指定过期时间(Expires
)或者有效期(Max-Age)。需要注意的是,有些浏览器提供了会话恢复功能,这种情况下即使关闭了浏览器,会话期Cookie也会被保留下来,就好像浏览器从来没有关闭一样。
持久性Cookie
和关闭浏览器便失效的会话期Cookie不同,持久性Cookie可以指定一个特定的过期时间(Expires
)或有效期(Max-Age
)。
Domain
和 Path
标识定义了Cookie的作用域:即Cookie应该发送给哪些URL。
Domain
标识指定了哪些主机可以接受Cookie。如果不指定,默认为当前文档的主机(不包含子域名)。如果指定了Domain
,则一般包含子域名。
例如,如果设置 Domain=mozilla.org
,则Cookie也包含在子域名中(如developer.mozilla.org
)。
Path
标识指定了主机下的哪些路径可以接受Cookie(该URL路径必须存在于请求URL中)。以字符 %x2F
("/") 作为路径分隔符,子路径也会被匹配。
例如,设置 Path=/docs
,则以下地址都会匹配:
/docs
/docs/Web/
/docs/Web/HTTP
SameSite
Cookie允许服务器要求某个cookie在跨站请求时不会被发送,从而可以阻止跨站请求伪造攻击(CSRF)。
SameSite cookies是相对较新的一个字段,所有主流浏览器都已经得到支持。
下面是例子:
Set-Cookie: key=value; SameSite=Strict
SameSite可以有下面三种值:
None
浏览器会在同站请求、跨站请求下继续发送cookies,不区分大小写。
Strict
浏览器将只发送相同站点请求的cookie(即当前网页URL与请求目标URL完全一致)。如果请求来自与当前location的URL不同的URL,则不包括标记为Strict属性的cookie。
Lax
在新版本浏览器中,为默认选项,Same-site cookies 将会为一些跨站子请求保留,如图片加载或者frames的调用,但只有当用户从外部站点导航到URL时才会发送。如link链接
会话劫持和XSS
在Web应用中,Cookie常用来标记用户或授权会话。因此,如果Web应用的Cookie被窃取,可能导致授权用户的会话受到攻击。常用的窃取Cookie的方法有利用社会工程学攻击和利用应用程序漏洞进行XSS攻击。(跨站脚本攻击(Cross Site Script为了区别于CSS简称为XSS)指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。)
如:
攻击者想拥有留言系统中后台管理员的权限,只要截取添加管理员账号时的HTTP请求信息,然后使用XML HTTP对象在后台发送一个HTTP请求即可。
怎么截取添加后台管理员账号的请求消息呢?这个不是抓包获取,是在正常添加用户时XSS代码中用 xmlhttp对象发送一个POST请求,由于该请求带上了被攻击者的Cookie并一同发送到服务端,所以能在后台悄悄地添加一个管理员账户。
添加管理员请求的POST数据:UserName=12345&password=1234
XSS Shellcode:
var params ="UserName=xss&password=1234";
xmlhttp.send(params);
跨站请求伪造(CSRF)
在不安全聊天室或论坛上的一张图片,它实际上是一个给你银行服务器发送提现的请求:
<img src="http://bank.example.com/withdraw?account=bob&amount=1000000&for=mallory">
当你打开含有了这张图片的HTML页面时,如果你之前已经登录了你的银行帐号并且Cookie仍然有效(还没有其它验证步骤),你银行里的钱很可能会被自动转走。有一些方法可以阻止此类事件的发生:
唯一的标志符号:uuid怎么生成?
UUID是128位的全局唯一标识符,通常由32字节的字符串表示。它可以保证时间和空间的唯一性,也称为GUID,全称为:UUID —— Universally Unique IDentifier,Python 中叫 UUID。
它通过MAC地址、时间戳、命名空间、随机数、伪随机数来保证生成ID的唯一性。
UUID主要有五个算法,也就是五种方法来实现。
参考:
官方文档:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Cookies
XSS和会话劫持:https://www.cnblogs.com/dolphinX/p/3391351.html
python uuid:https://www.cnblogs.com/loveapple/p/9445507.html
标签:span rust firefox 阶段 str ash line name 资源
原文地址:https://www.cnblogs.com/Plorde/p/12308228.html