• 0
  • 0
分享
  • Web安全之如何防止cookie被窃取?——软件测试圈
  • 曼倩诙谐 2021-08-26 09:52:23 字数 1472 阅读 750 收藏 0

  在web安全领域,OWASP(开放式web应用程序安全项目)每年都会公布OWASP TOP 10,TOP 10总结了当年10种最常见、最危险的web应用程序安全漏洞。在TOP 10名单中,跨站脚本攻击(XSS)和跨站请求伪造(CSRF)是常客,攻击者发起XSS和CSRF攻击的重要前提是窃取到保存在浏览器客户端的cookie信息。那么,cookie信息是什么?为什么它在web攻击中有重要的作用?且听小编细细道来。

  在http协议下,客户端发起http请求,服务器端处理请求后返回http响应,但是http是无状态的,因此对于需要进行身份辨别的web应用程序,客户端每次发起请求都需要带上用户的身份信息,该身份信息的载体就是cookie。Cookie是保存在客户端本地的数据,通常会包含用户账户以及登陆成功后服务器端返回的sessionid等信息,服务器端需要根据cookie信息辨别用户身份以及进行session跟踪。

  既然cookie信息这么重要,那么该如何防止客户端的cookie信息被窃取?小编总结有如下几种方式:

  1.设置Cookie的HttpOnly属性为true。

  一般来说,跨站脚本攻击(XSS)最常见的攻击方式就是通过在交互式网站(例如论坛、微博等)中嵌入javascript脚本,当其他用户访问嵌有脚本的网页时,攻击者就能通过document.cookie窃取到用户cookie信息。如果网站开发者将cookie的httponly属性设置为true,那么浏览器客户端就不允许嵌在网页中的javascript脚本去读取用户的cookie信息。

  2.设置cookie的secure属性为true。

  虽然方式1能防止攻击者通过javascript脚本的方式窃取cookie,但是没办法防止攻击者通过fiddler等抓包工具直接截取请求数据包的方式获取cookie信息,这时候设置secure属性就显得很重要,当设置了secure=true时,那么cookie就只能在https协议下装载到请求数据包中,在http协议下就不会发送给服务器端,https比http更加安全,这样就可以防止cookie被加入到http协议请求包暴露给抓包工具啦。

  3.设置cookie的samesite属性为strict或lax。

  前文提到攻击者获取到cookie后,还会发起跨站请求伪造(CSRF)攻击,这种攻击方式通常是在第三方网站发起的请求中携带受害者cookie信息,而设置了samesite为strict或lax后就能限制第三方cookie,从而可以防御CSRF攻击。当然,当前常用的还有校验token和referer请求头的方式来防止CSRF攻击,感兴趣的读者也可以自己翻阅材料了解下。

  4.设置cookie的expires属性值。

  通常,cookie的有效期会被设置为永久有效或一个较长时间的正数值,这样的cookie会被保存在本地,攻击者获取cookie信息后可以在相当长的一段时间里控制用户账号,而如果给cookie设置expires值为-1,那么该cookie就仅仅保存在客户端内存中,当浏览器客户端被关闭时,cookie就会失效了。

  总结一下,小编上述整理的设置cookie的httponly、secure、samesite、expires属性值,能够从多角度出发,防止cookie被盗取,从而降低了被XSS和CSRF漏洞利用给用户造成损失的风险。



作者:陈秀霞   

来源:51Testing软件测试网原创

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   前言  自动化执行结果都需要有个报告来展示,常用的报告有HTMLTestRunner,pytest-html,Allure。这三种报告各有不同,本文主要介绍如何通过python来生成Alluer报告。  Allure  Alluer属于一种开源的测试框架,可以基于多种语言进行使用,如java的junit,python的pytest。alluer生成的报告内容比较美观,目前测试中常用的测试报告。Allure的环境是基于java环境的,前提条件需要将java的环境安装完成(下载JDK,配置环境变量)。  下载地址:https://github.com/allure-framework/allu...
            11 11 1464
            分享
          • 大家好,我是阿常,昨天测试职业成长+面试专项辅导社群主理人CC老师在视频号进行了第一场公开直播,直播时长1小时,观众总数415人。直播主题是“测试团队管理案例分析:如何有效地激活团队”,主持人CC,嘉宾老张、周晶,当事人Janson。CC:团队质量管理,《说透性能测试》作者,付费订阅1W+。老张:前得物稳定性测试团队leader。周晶:某技术公司测试经理,擅长大数据测试。Janson:社群学员,团队质量管理,带18人团队。案例背景现状1. 团队规模18人2. 项目特性不同,成员差距大3. 办公地点不同,且距离较远4. 大家对测试团队没有归属感5. 部分项目很忙部分项目很闲考虑过的方案1. 人员...
            0 0 662
            分享
          • 光明网乌镇11月9日电(记者孙满桃)在今天下午举行的2022年世界互联网大会乌镇峰会网络法治论坛上,《反电信网络诈骗倡议》(以下简称“倡议”)发布,为建设清朗网络空间贡献力量。随着通讯网络技术的快速发展与应用,电信网络诈骗活动呈高发频发势头,严重侵犯人民群众财产安全,严重侵蚀社会诚信根基,严重破坏社会和谐稳定。为此,倡议提出五点建议:积极参与,构建共建共治新格局;自律自觉,筑牢网络安全新基准;惩防并举,实现网络诚信新高度;提升素养,推进网络伦理新建设;加大宣传,培育全民反诈新意识。其中,倡议指出,要履行主体责任,加强自我约束,促进行业自律,加快数字法治体系建设,强化数据安全和个人信息保护,共筑...
            0 0 594
            分享
          • 尽管在很多情况下测试自动化是有意义的,但一些测试场景是不应该使用自动化测试工具的,比如Selenium、WebDriver。下面有10个示例,来解释为什么自动化在这种情况下使用时没有意义的,我还将为您提供每种方法的替代方法。验证码CAPTCHA是完全自动的公共的图灵测试,以区分计算机和人类之间的区别的简称,它的存在是为了防止自动化,因此甚至不值得尝试。在测试过程中,有两种主要策略可以解决CAPTCHA检查问题。如下:在测试环境中禁用CAPTCHA。这可能是被测软件中的简单配置。或者甚至可以在测试的URL参数中配置;添加一个挂钩,以允许测试绕过验证码。外观测试视觉自动化测试意味着检查页面如何呈现...
            14 14 1792
            分享
          •   自动化听起来很美,但实践并不容易,许多人将其视为实际结果与需求中提供的预期结果的比较,甚至认为自动化就是一系列重复和可重复的操作。如果仅仅停留在这些肤浅的理解往往会导致自动化测试的失败。  下面我从多个角度探讨测试自动化问题,并提出了一些需要关注的主要因素:工具和技术、需求和风险、维护和安全。  工具和技术  软件测试发展至今,市面上已经有很多商业、免费和开源的测试工具。选择哪种工具取决于对产品当前形态的支持程度以及对产品未来演进持续的支持程度。  除了使用现成的自动化工具,也可以选择自研测试工具。而使用哪种技术实现自动化工具就至关重要。例如,Selenium的早期版本还不支持处理浏览器弹...
            0 0 570
            分享
      • 51testing软件测试圈微信