WAF开发之Cookie安全防护

发布时间:2025-01-16 点击:46
一、前言 cookie安全防护功能主要实现以下两个目标 1、防止xss攻击盗取用户cookie
2、防止基于cookie的sql注入\命令注入\其他乱七八糟的攻击
优点 1、安全(有破解思路麻烦告知)
2、通用
3、配置简单
缺点 1、基于ip地址进行识别,在相同外网ip的情况下,可xss盗取cookie成功,既不防熟人xss攻击
2、在登陆后如果ip地址变动,需重新登陆
二、实现 实现思路是通过aes加密set-cookie中的键值来确保cookie的安全,具体如下图:
set-cookie加密流程
首先获取aes的初始密钥key,接着判断是否开启客户端ip绑定,是的话aes的密钥为key+clientip,不是则为key,之后通过aes对set-cookie的键值进行加密,加密过程中忽略expires,max-age,domain等保留键,之后重写整个set-cookie
cookie解密流程
首先获取aes的初始密钥key,接着判断是否开启客户端ip绑定,是的话aes的密钥为key+clientip,不是则为key,之后通过aes对cookie的键值进行解密,解密过程中判断是否开启安全模式,是的话将丢弃无法解密的键值,不是则保留键值,之后重写整个cookie
开启配置
如上图,一共四个选项:
第一个为是否开启cookie安全防护,默认为关闭;
第二个为是否开启客户端ip绑定,默认为开启;
开启客户端ip绑定后,当攻击者通过xss漏洞盗取用户cookie后,因ip不同导致aes密钥不同,无法成功解密进而无法登陆系统。关闭客户端ip绑定将无法防止xss攻击盗取用户 cookie。
第三个为安全模式选择;
默认为兼容模式,兼容模式下,如果参数解密失败,将保留,即解密失败的键值将维持原样传递到后端服务器,例如xss攻击获取的session加密串将直接传递到后端,但因服务器检测不到session键值而无法登陆。安全模式将丢弃所有无法解密的键值。选择兼容模式无法防止基于cookie的sql注入等攻击。
第四个为密钥,值默认为false,开启后需点击按钮生成随机16位密钥。
实现效果
三、总结 cookie安全防护功能的核心在于,数据的加密解密都在waf上进行,密钥无需存储在前端,在没有密钥的情况下,可以认为密文是无法破解的。在开启客户端ip绑定后,可以在全站层面有效防止xss攻击盗取用户cookie的情况,攻击者就算拿到用户session的密文也因waf无法解密而失效。而开启安全模式后,攻击者输入的基于cookie的sql注入\命令注入等因waf无法解密而被丢弃,从而保护后端服务器安全。总的来说,该功能可以做为一种低成本的全站xss攻击缓解方案。
对于waf而言,该功能的意义在于,后续的防护规则开发,可以忽略cookie方面的规则防护。同时如果基于性能和风险考虑,也可以相应的减少xss攻击甚至不要xss攻击的防护规则,从而减少规则集的维护难度和waf处理性能。xss的问题可以通过前端框架处理以及配合其他诸如前端参数加密,机器学习等方法来解决。
对于现有的网站来说,可以通过重写网站架构中cookie相关的代码来实现同样的功能,实现起来也不复杂。
*本文作者:chenjc,转载请注明来自freebuf.com


seo最基础的问题处理有哪些?
写给所有站长:不要参加SEO培训
网站改版三件事:为什么?怎么做?如何选择?
为什么说偏离正道经营网站建设公司就会穷途末路
高速的虚拟服务器(VPS)怎么选?
创业型公司网站建设时请千万不要轻视模版网站的作用
海外云服务器太慢了怎么办?
企业建设网站的方式都有哪些?