Cookie和会话安全

这篇具有很好参考价值的文章主要介绍了Cookie和会话安全。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Cookie时Web服务端发送给用户但浏览器的一小段数据,浏览器会存储这些数据并且在后续发往服务器的请求中带上它们。(是一种将数据存储在客户端的方式)

cookie分类:

第一方Cookie:

First-Party Cookie,是指用户当前访问的网站直接植入的Cookie,通常时网站用于正常功能的Cookie,便于使网站记住用户的偏好设置。

第三方Cookie

Third-Party Cookie,当用户访问一个网站时,如果这个网站加载了其他网站的资源,此时其他网站植入的Cookie就称为第三方Cookie。

注意:第一方和第三方Cookie是相对的概念,我们是根据用户是直接访问网站还是通过外部网站嵌入访问来决定该网站是第一方还是第三方。比如我有 a.com, 其中有一个ad.com广告网站,那么我访问a.com上的ad.com就是访问第三方Cookie,如果直接访问ad.com就是访问第一方Cookie

联想:网站个性化广告的投放

我在浏览第一个网站时关注了某个物品,当我到另外一个网站,会推送给我那个物品的广告,就是这两个网站拥有相同的第三方Cookie。

所有浏览器都会接收第一方Cookie,但是浏览器隐私策略可能会阻止部分第三方Cookie。

Cookie属性

  1. Domain属性:

    • 指定Cookie在哪些域名中生效,即访问哪些域名会发送这个Cookie,也决定了哪些域名的网页可以通过JavaScript访问这个Cookie。

    • 如果域名前带 ‘ . ’ 号,表示该Cookie对当前域名及其子域名都有效。如果不带仅在当前域名有效。

    • 如果在服务端通过Set-Cookie 写入Cookie时,不指定Domain属性,Cookie的生效范围仅限于当前域名,Host-Only Cookie。

    • 目前主流浏览器都遵循RFC 6265规范,在 Set-Cookie 或 JavaScript 中写入Cookie时只要加入了Domain属性,即使没有点号 “ . ”前缀,它也不是 Host-Only Cookie。

    • 注意:Cookie的域名隔离不受端口的限制,须评估使用该域名不同端口的web应用的安全性

  2. Path属性:

    • 用于指定Cookie生效路径,只有访问这个路径时,浏览器才会发送这个Cookie。

    • 如果不设置Path,默认值就是当前页面所在路径。

    • 不能依赖Path来做安全隔离,因为在浏览器中一个路径页面可以使用ifram嵌入另一个路径页面,而这两个页面为同源,他们之间DOMD可以互相访问,所以一个页面可以读取另一个页面的Cookie

  3. Expries属性:

    • 服务端可以通过Expires属性来设置Cookie的有效期,浏览器会在这个Cookie到期后自动将其删除。

    • 没有指定Expries属性的Cookie叫做“临时Cookie”,在关闭浏览器后将自动删除。

    • 设置了有效期的Cookie,浏览器并不能保证他在有效期内不被删除,因为浏览器对Cookie的存储存在一个上限,超过这个上线,会删除旧的Cookie。

  4. HttpOnly属性:

    • 说明Cookie只能用于HTTP/HTTPS传输,客户端JavaScript无法读取它。

  5. Secure属性:

    • 给Cookie设置该属性后,Cookie指挥在HTTPS亲求种被发送给服务器,非加密HTTP请求是不会发送该Cookie的。

  6. SameSite属性:

    • SameSite是一个新的安全属性,服务端在 Set-Cookie响应头中通过SameSite属性指定是否可以在跨站请求中发送该Cookie,即它能不能作为第三方Cookie。

      • None:

        • 不做限制,任何场景下都会发送Cookie。但是当SameSite被设置为None时,要求Cookie带上Secure属性,即只能在HTTPS协议中发送。

      • LAX:

        • 在普通的跨站请求中都不发送Cookie,但是导航到其他网站时(点击连接)会发送Cookie。

        • 在跨站点提交表单的场景中,只有GET方法提交的表单会带Cookie。

      • Strict:

        • 完全禁止在跨站请求中发送Cookie,即使点击站外链接也不会发送Cookie,只有当请求的站点与浏览器地址栏中URL中域名属于同一个站点时才会发送Cookie。

        • 由于会影响到用户体验,使用非常少。

    • SameParty属性:

      • 即允许企业将多个网站定义成一个可信站点集合,称为First-Party Sets。当一个网站请求另一个网站资源时,浏览器会检测这两个网站是否同处一个First-Party Sets,如果是带有SameParty 属性的第三方Cookie也会被带上。

    • Cookie前缀:

      • 在存在子域名的网站中,每个站点可以通过设置Cookie的Domain属性,写入一个让所有子域名都可见的Cookie。这将带来一定的混乱,每个站点都无法确定一个Cookie是不是自己写入的。

      • _Host-

        • 服务端通过 Set-Cookie 头设置 Cookie,或者前端脚本通过 document.cookie 属性设置Cookie时,只有满足以下四个条件浏览器才接受:

          1. 带有Secure属性

          2. 不包含Domain属性

          3. Patj属性为“ / ”

          4. 当前为HTTPS链接

      • _Secure-

        • 只有带Secure属性且当前连接为HTTPS浏览器才会接受,是一个约束更少的弱化版本。

保密性和完整性

在Web服务器角度来看,Cookie是对用户完全公开的,应该把Cookie当作不可信的外部输入数据,不能用Cookie数据来做关键的判断。

会话安全

在Web应用中,会话的本质是标识不同的访问者,记录他们的状态,攻击者如果窃取或者伪造了一个会话标识就相当于盗取一个账号身份。

会话管理

会话ID最基本的要求是随机性。

过期和失效

由于Cookie中有效时期访问者可以任意修改Expires属性,所以超时机制应该在服务端实现的。

绑定客户端

如果将绘画与客户端绑定会更安全,即使SessionID被窃取也无法在新的设备中登录目标网站。(QQ异地登录?)

另一个更安全的做法是在登录时将会话与访问者的IP地址绑定,但是会影响用户体验。

安全传输

现代Web应该基本上都是将SessionID写入到Cookie中,所以设置相应的Cookie安全属性非常重要,大多数情况下,建议开启HttpOnly和Secure属性。文章来源地址https://www.toymoban.com/news/detail-774595.html

到了这里,关于Cookie和会话安全的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 阿里域名+腾讯云服务器组合部署网站

    前段时间,我在阿里云上购买了一个域名。本想着也在阿里云上购买一台入门级服务器先玩玩,但是在看完一系列的产品后,还是放弃了阿里云的服务器。对比几家之后还是选择了腾讯云,接下来,就是踩坑和避坑的经验了。 1. 腾讯云解析阿里域名的坑 修改域名的DNS服务器

    2024年02月10日
    浏览(62)
  • streamlit——搭建作业、文件上传网站(代码编写、服务器部署)

    由于我平时需要收集 各种类型的作业文件 。但传统的微信收文件方式很让我头大,假如我们班级有39人,那么我需要接收39个人的消息文件,并 另存到本地某文件夹 下,还需要帮不规范的 命名进行修改 。 后来我尝试过使用Flask编写上传文件,并部署到服务器上。不仅速度很

    2024年02月10日
    浏览(57)
  • 前端部署(包括node服务端部署)--手动部署到服务器

    在阿里云(或者其他厂商)购买域名,有些域名需要备案 接着购买服务器,镜像选择Ubuntu/CentOS的(Linux) 公网带宽的就按使用量来收费:10Mbps(自己使用的话) 系统配置:配置密码 之后购买成功,获得公网ip 初次先进行远程连接,在终端里面:ssh root@公网ip(powershell可以填写ssh了)

    2024年03月25日
    浏览(49)
  • 玩转服务器之网站篇:新手使用WordPress搭建博客和静态网站部署

    静态网站部署和WordPress搭建博客都是网站运营中常见的工作。静态网站是一种不需要服务器端脚本的网站形式,通常使用HTML、CSS和JavaScript等静态资源进行构建和显示。而WordPress是一款流行的博客系统,可以帮助用户快速搭建博客网站。 在之前的玩转服务器系列文章里,我们

    2024年02月07日
    浏览(56)
  • 前端项目部署,阿里云服务器部署前端项目,超详细

    需求背景 :作为一个前端,特别身处于中小公司时,对于部署也需要有所了解。本次就介绍前端基础的项目部署。本次使用的是阿里云服务器进行的部署 1.准备打包好的前端代码(dist包)或者是一个html文件 2.购买阿里云服务器,并且连接 3.为阿里云服务器安装ngnix开启web服务

    2024年02月04日
    浏览(56)
  • 前端项目部署到服务器

    1.准备工具 服务器:阿里云 腾讯云 华为云都可以 我这里使用的是阿里云ECS共享型(推荐) xshell:用于远程连接服务器,修改配置文件 xftp:用于连接远程服务器,将本地资源上传到远程服务器 2.服务器设置 1.第一次需重置实例密码 2.配置安全组规则 开启常用的端口 22必须要开

    2024年02月04日
    浏览(46)
  • 阿里云服务器部署Drupal网站教程基于CentOS系统

    阿里云百科分享如何在CentOS 7操作系统的ECS实例上搭建Drupal电子商务网站。Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成。它用于构造提供多种功能和服务的动态网站,能支持从个人博客到大型社区等各种不同

    2024年02月13日
    浏览(42)
  • windows(iis)服务器部署安装wordpress(php)网站教程

    该教程包含iis安装,php安装,mysql安装,php网站部署上线,windows服务部署php网站,只需要这一篇文章就够了。 该教程为iis服务器部署安装wordpress(php)网站教程,同样适用wordpress网站迁移。 配置要求        打开控制面板》程序与功能》启用或管理Windows功能 需要说明的是一定

    2024年02月14日
    浏览(85)
  • java的Web项目网站部署到服务器(半天搞懂)

    当我们打开浏览器,输入自己想要的网站,我们需要的一切都展示在我们面前,我们有没有想过,这一切是怎么发生的? 首先当你输入一个网站的时候,你的浏览器会先通过域名,来查找它所对应的ip地址,因为域名是用来让人看得,而机器只能看IP地址。 我们会借助一个服

    2024年02月05日
    浏览(46)
  • IIS如何本地部署网站,作为局域网内的服务器

    可以类推此方法,将写好的Web部署到云服务器上,通过公网IP访问,就成功对整个互联网世界发布自己的网站啦! PDA使用的是 Win CE 5.0的嵌入式系统,较老,而我们使用的数据库是SQL Server2016,较新,两者不能直接进行数据交互,需要一个中间件(WebService) 牵线搭桥 . 图片说

    2024年01月15日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包