51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2788|回复: 2
打印 上一主题 下一主题

[原创] Web安全之如何防止cookie被窃取?

[复制链接]
  • TA的每日心情
    无聊
    13 小时前
  • 签到天数: 1050 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2021-8-19 09:58:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     在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漏洞利用给用户造成损失的风险。

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-21 22:28 , Processed in 0.058377 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表