功能介绍
采用Cookie加密、Cookie签名等方式对Cookie字段的字进行加密或签名,防止敏感信息泄露以及防护一些使用Cookie中的弱key进行权限绕过的漏洞利用,也能在一定程度上限制基于Cookie修改的爬虫。
注意通过浏览器本地设置的Cookie,不适用该防护方式。边缘安全加速平台-安全与加速服务防护的Cookie经过代理服务器设置修改,无法对浏览器通过js设置修改的Cookie操作。
背景信息
一些利用Cookie的攻击行为
Cookie盗用攻击
黑客等待合法用户登录系统之后,从合法用户浏览器中拿到名字为JSESSIONID的Cookie,将其放入黑客自己的浏览器的Cookie中,当黑客带着盗窃来的JSESSIONID访问系统时,后端系统会根据JSESSIONID找到对应的session,将该次请求当成是认证通过的用户发送的请求,如此黑客便可以客户的身份完成一系列敏感操作。
Cookie篡改攻击
当Cookie内容明文存储时,Cookie信息存在泄露风险。例如:Cookie内明文存储用户权限,当黑客篡改权限值,且服务端未重新校验Cookie当中的用户权限是否合法时,黑客将获得一系列提权操作。
Cookie信息泄露
Cookies内容存储含有用户密码,手机号,地址等信息时,Cookie一旦泄露,黑客将获取到客户敏感身份信息。
Cookie防护工作原理
Cookie加密
Cookie加密:针对Cookie信息当中存在明文数据或可修改内容进行加密,通过反向代理服务器将Cookie值进行替换,客户端获取到的将为加密数据信息,无法进行修改。客户请求经过代理服务器时,对应Cookie值会进行解密,明文传输给源站,保证源站无切换感知。
注意:Cookie内容通过浏览器解析后需要展示在客户端时,请勿使用Cookie加密和HTTP Only选项,会导致浏览器无法识别原始Cookie内容、js服务读取Cookie值。
Cookie签名
针对Cookie进行签名,会新增一个Cookie签名字段,原始Cookie内容正常发送给用户,当客户端Cookie内容进行了修改,请求在WAF端签名校验不通过,该请求将被拦截。
前提条件
操作步骤
- 登录边缘安全加速平台控制台。
- 在左侧导航栏中选择【安全能力】,进入【Web应用防火墙】菜单,并在左侧域名列表选择您要防护的域名。
- 进入防护能力-高级安全防护-【Cookie防护】详细设置页。
配置说明
防护开关
控制策略生效的总开关,可以选择关闭、告警或拦截,关闭后Cookie防护将不生效。
防护条件
配置项 说明 Cookie key 值 设置需要防护的Cookie名称,Cookie必须有参数值,例如:set-cookie: SF_cookie_11=ENCRYPT_COOKIE1988262423afZ5ZEIzbEL%3D; Secure; SameSite=Strict, 只有SF_cookie_11、SameSite可配置为key 防护方式 支持选择加密与签名两种防护方式,需要配置防护动作与防护过渡期
加密:对Cookie值进行加密,客户端查看到的值为加密后的内容
签名:给Cookie值加签名字段,签名方式可选
UA:使用该方式签名,客户UA变换后,Cookie签名验证将不通过
IP+HOST+UA:泛域名模式下,加签HOST字段
IP+UA:使用该方式签名,客户IP或使用浏览器改变后,使用之前Cookie防护验证不通过
IP:使用该方式签名,客户ip变换后,Cookie签名验证将不通过
防护动作 拦截/清除
拦截:Cookie值检测不通过将拦截请求,并清除Cookie
清除:Cookie检测不通过清除该Cookie回源,总开关为拦截,防护动作为清除,最终效果仍为清除
防护过渡期 在过渡期内(即在配置的时间之前),检测失败不会进行拦截,只会清除Cookie值,重新登录后将下发新的Cookie值 Cookie属性 支持选择HTTP Only和secure
设置后Cookie不允许js读取,有效防止xss盗取客户Cookie,配置后,Cookie响应头部增加值Http Only,若源站响应已存在Http Only,会同时存在
secure:Cookie设置为secure的时候,客户端只能通过https协议发送Cookie,无法通过http发送
防护白名单
如果有特殊的业务无法通过Cookie防护策略,可以不同粒度的请求进行加白,则符合加白条件的请求不会进行Cookie防护策略。