HTTP ·cookies

一、认识cookie

1.HTTP Cookie是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。

2.致命缺点:

指定cookie后,浏览器每次请求都会带上cookie数据这样会有额外的性能开销

3.用途:

会话状态管理,例如记录用户登录状态,购物车信息等

个性化设置,例如用户的自定义设置

浏览器行为跟踪

二、创造一个cookie

1.Set-Cookie响应头部:当服务器收到 HTTP 请求时,服务器可以在响应头里面添加一个Set-Cookie选项向向用户代理(一般是浏览器)发送 Cookie信息

语法:

Set-Cookie: <cookie名>=<cookie值>

2.服务器通过Set-Cookie响应头部来告知客户端他需要保存的Cookie响应头部,后来,对该服务器发起的每一次新请求,浏览器都会将之前保存的Cookie信息通过 Cookie 请求头部再发送给服务器。

3.先设置Set-Cookie响应头部在编写请求头部

HTTP/1.0 200 OK
Content-type: text/html
Set-Cookie: yummy_cookie=choco
Set-Cookie: tasty_cookie=strawberry

GET /sample_page.html HTTP/1.1
Host: www.example.org
Cookie: yummy_cookie=choco; tasty_cookie=strawberry

三、生命周期

1.定义方式:
①取决于过期时间(Expires)或有效期(Max-Age)指定的一段时间(需要自己手动设置)。<持久性Cookie>

②浏览器关闭之后它会被自动删除,不用指定任何时间和期效,但有浏览器提供了会话恢复功能,这种情况下即使关闭了浏览器,会话期Cookie 也会被保留下来<会话期 Cookie >

2.注意:当Cookie的过期时间被设定时,设定的日期和时间只与客户端相关,而不是服务端。

四、限制访问Cookie

Secure 属性和HttpOnly 属性可以确保 Cookie 被安全发送,并且不会被意外的参与者或脚本访问

1.Secure 属性:只通过被 HTTPS 协议加密过的请求发送给服务端,但因为Cookie 固有的不安全性,Secure 标记也无法提供确实的安全保障,因此不可用 Cookie 传输敏感信息

四、Cookie的作用域

Domain 和 Path 标识定义了Cookie的作用域(允许 Cookie 应该发送给哪些URL)

1.Domain属性——指定了哪些主机可以接受 Cookie

默认为origin,不包含子域名,指定了的 话一般就会包含子域名

2.Path属性——指定了主机下的哪些路径可以接受 Cookie(该 URL 路径必须存在于请求 URL 中)

以"/"作为路径分隔符,那么该g路径的子路径也会被匹配到

五、SameSite attribute

阻止跨站请求伪造攻击:SameSite Cookie允许服务器要求某个 cookie 在跨站请求时不会被发送

1.属性值

  • None浏览器会在同站请求、跨站请求下继续发送 cookies,不区分大小写。
  • Strict浏览器将只在访问相同站点时发送 cookie。(在原有 Cookies 的限制条件上的加强)
  • Lax与 Strict 类似,但用户从外部站点导航至URL时(例如通过链接)除外。 在新版本浏览器中,为默认选项,Samesite cookies 将会为一些跨站子请求保留,但只有当用户从外部站点导航到URL时才会发送(如 link 链接)

六、Cookie prefixes

1.两个前缀

①__Host-

(1)仅当它也用 Secure 属性标记,(2)是从安全来源发送的,(3)不包括 Domain 属性,并将 Path 属性设置为 / 时,他才在Set-Cookie标头中接受

②__Secure-

(1)仅当它也用 Secure 属性标记,(2)是从安全来源发送的,他才在Set-Cookie标头中接受

__Secure-限制要弱于 __Host- 前缀。带有这些前缀点 Cookie, 如果不符合其限制的会被浏览器拒绝

七、JS 通过 Document.cookie 访问 Cookie

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

八、缓解涉及Cookie的攻击

信息被存在 Cookie 中时,cookie 的值是可以被访问,且可以被终端用户所修改的。故当机器处于不安全环境时,切记不能通过 HTTP Cookie 存储、传输敏感信息。

1.使用 HttpOnly 属性可防止通过 JavaScript 访问 cookie 值。且也一定的缓解了会XSS

2.用于敏感信息的 Cookie 的生存期应较短,并且 SameSite 属性设置为Strict 或 Lax

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值