权限控制设计入门---Cookie 简介

引言

Cookie是一个漂亮的设计, 是HTTP协议中的重要组成部分, 用于网站保存传送一些网站的附加信息, 随着技术的发展, localstorage, sessionstorage的出现, cookie用的越来越少, 但是因为Cookie的特点, 登陆信息,SessionKey, private consent 还是主要存在于Cookie里面. 因为最近要写一个权限部分的知识, Cookie是绕不过的, 所以先介绍一些Cookie的基本知识.

基本知识

Cookie是一个Key:Value对, 在每次请求一个网址时, 都会随着请求(Request)传送到后台服务器, 后台服务器根据Cookie的不同, 可以做一些对应的处理, 目前主要用于保存用户的登陆Token, 会话Token等等信息, 也可以包括用户的一些设置, 比如显示偏好, 查询记录等等. Cookie的标准是RFC 2109, 希望了解Cookie的规格可以去查看, 不过一般不需要看了, 本文会提及主要内容.
Cookie的主要属性:

  1. Domain 域名(如www.jianshu.com), Cookie是和某一个域名关联的, 在向后台发请求时, 只有对应域名的Cookie会传送过去. 域名包括名字和端口(默认为80).
  2. Expires 过期时间, 超过某个时间后, Cookie会被浏览器自动清除.
  3. HttpOnly 是否允许客户端(也就是浏览器Javascript)访问
  4. MaxAge Cookie最长允许保留时间, 这个和Expires概念不太一样, Expires是一个固定时间, 到了就会清除. MaxAge是时间间隔, 从最后一次设置这个cookie算起, 到了这个间隔就会取消. 一般用于登陆信息的自动失效.
  5. Path cookie可以设置到具体的路径下, 特别是多租户网站, 可以让各个租户的cookie是不一样的. 比如(/MieMengNiao), 当有这个设置的时候, 只有访问这个路径(及子路径) 才会附加到请求上, 发回到后端.
  6. SameSite 用来限制第三方 Cookie,从而减少安全风险, 主要有三个选项, None, Lax, Strict. Strict最为严格,完全禁止第三方 Cookie,跨站点时,任何情况下都不会发送 Cookie。换言之,只有当前网页的 URL 与请求目标一致,才会带上 Cookie。Lax规则稍稍放宽,大多数情况也是不发送第三方 Cookie,但是导航到目标网址的 Get 请求除外。None就是没限制了.

这个设置主要是为了防止CSRF跨域攻击, 阻绝钓鱼网站窃取你的cookie

  1. Secure 这个是只有HTTPS时, 才会附加cookie,传送到后台. 为了防止中间人攻击, 现在网站一般都会应用SSL, 用HTTPS传输数据.

Cookie 的限制 在RFC2109中规定, 浏览器对于每个域名至少,要支持20个Cookie及以上, 每个Cookie的大小至少4K以上(cookie的大小,包括Key和Value的长度), 目前主流浏览器支持远多于这个限制, 但是不建议超过RFC规定的最低要求. 另外从实践角度, 也不支持太多, 太大的Cookie, 这个会拖慢网站访问速度, 无必要的消耗带宽和服务器资源.

AspNetCore中的Cookie

AspNetCore对于Cookie支持很好(所有的主流框架对cookie支持都很好, 也都差不多, 这个算是基础设施).
HttpRequest/HttpResponse上都有对应的IRequestCookieCollectionIResponseCookies接口, 可以读取写入cookie.
Microsoft.AspNetCore.Authentication.Cookies中有一个CookieManager, 可以对Cookie进行简单的添加,删除等操作, 特别是, 它会自动把超长的cookie(超过4K)分拆成多个Cookie, 保证在任何浏览器上都可以正常工作.

其它

因为Cookie并不安全, 主流的浏览器都可以让用户控制是否关闭掉Cookie的功能, 据我的经验, 好像没有人真的关闭Cookie功能, 因为没有Cookie真的不方便.

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容