• 0
  • 0
分享
  • Web安全之如何防止cookie被窃取?——软件测试圈
  • 曼倩诙谐 2021-08-26 09:52:23 字数 1472 阅读 1033 收藏 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软件测试网原创

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 1、什么是 FastHttpUser在介绍FastHttpUser之前,我们先看一下,Locust默认客户端使用的是啥?Locust 默认客户端使用的是python-requests。>> 如果不了解 python-requests,可以看一下小鱼的这篇:《requests库常用到的7个主要方法及控制访问参数》或者官方文档,如果有足够耐心的话:《Requests》我们接着说,使用requests是Pyhton维护非常方便的包,并且在python应用中非常广泛,栗如:爬虫,接口等。所以,官网是非常推荐我们使用HttpUser。但是,如果我们的测试规模非常大,数据量非常大,那么这个时候...
            1 1 24933
            分享
          •   死锁就是有一天你回家,拿着一把钥匙使劲往锁眼里面捅,结果钥匙断里面了,所以你就叫开锁师傅要开锁,结果锁给开死了,这就是死锁了。以上仅仅是玩笑话,以下步入正题。  什么是死锁?  要了解什么是死锁,要首先明白一点,锁是用来做什么?Java中的锁说白了,就是为了保证资源安全,确保一次仅有一个线程对共享资源进行修改。(以上仅为个人理解,如有问题,请评论讨论。)那死锁的概念就好理解了,就是有两个及以上的线程对同一个资源进行争夺,结果两个线程没有一个让步,并且没有任何的外力进行协调导致的一种僵局。  例1:马路上就只有一条道,刚好两辆车都到了,两司机开始吵架说,是我先到的,没有一个让的,而刚好这条路...
            0 0 1093
            分享
          • 一、功能测试用例的设计举例:(一)我想要回家,让你给我买一张票,然后设计测试用例答案:确定需求(回家回哪,需要什么票,买什么时候的票)开始测试功能测试(我去买票(买火车票,飞机票),买到票(什么时候),回来给你);可靠性测试(我去买票过程中被撞死了,票买不到怎么办,延期了,买那个点的票没了怎么办让我帮他买票的人的身份,比如是否有特殊优待,如军人,1米2以下儿童等,身份证丢了,或者票丢了,责任划分);可维护性测试(票是否可保存完好);兼容性(还不同人的去买,我中间招人去买,我坐车走路);算法测试(我通过不同的渠道买票花费的时间);竞品测试(别的人怎么买的票);安全性测试(身份信息保密);性能测试...
            0 0 1636
            分享
          • Jmeter如何与Selenium WebDriver采样器结合使用要将Selenium WebDriver与JMeter一起使用,只需要下载Webdriver Set插件即可。WebDriver采样器能有助于测试基于AJAX 和GWT web应用程序的性能,以及模拟用户操作。通过Meter Plugins Manager(JMeter插件管理器)安装Webdriver。如同以往那样编写WebDriver脚本,然后将“Thread Group(线程组)”添加到“Test Plan(测试计划)”中。添加配置元素 —> HTTP Cookie管理器,配置元素 —> ...
            0 1 3600
            分享
          •   环境准备  1.安装JDK(自行安装)  2.安装Jmeter  (1)Jmeter下载地址并解压(本位使用5.1.1版本~)  https://archive.apache.org/dist/jmeter/binaries/  (2)打开Jmeter  进入Jmeter解压文件的bin目录下,双击jmeter.bat文件,即可打开Jmeter  知识点-Jmeter取样器  在正式开始使用Jmeter前,先了解“Json Extractor”的概念。  Json取样器:使用Jsonpath语法,一般用于从响应结果数据里面获取动态变量值  Jsonpath基础语法说明  项目背景  使用J...
            1 3 2615
            分享
      • 51testing软件测试圈微信