6、CSRF漏洞管理

发布时间 2023-05-23 14:07:54作者: yaphetss

一、CSRF概念

  答:全称是Cross-site request forgery,跨站请求伪造,我们可以理解未这种漏洞为攻击者利用被攻击者的身份发起了某些被攻击者原本不知情的网络请求,包括以被攻击者的身份发布微博,留言等。CSRF能够发邮件,发消息,盗取账户,购买商品,虚拟货币转账等。

二、CSRF漏洞原理

    受害者----访问----->A网站,A网站提供了cookie后,受害者访问了黑客提供的网站H,其中网站H中JS代码提交请求。获取了受害者的A网站cookie。大致原理就是这样。

  此类漏洞产生需要特定的条件,受害者必须登录过网站,攻击者提供的恶意链接受害者必须打开了,网站除了验证cookie,没有特殊的验证方法。

三、如何防止CSRF产生
为了防止CSRF攻击,Token要求不能重复,需要含有时间戳信息、签名信息。
下面的图描述了一个token的数据构成:
Token的数据结构。
token由三部分组成:
  a). 消息[msg]:而msg本身也有两部分组成:一部分:随机字符串,过期时间戳。
  b). 分割符[separator]:用于分隔msg部分与加密后生成的signature签名部分,这里用的是”.“
  c). 签名[signature]:signature。signature签名,是对“msg消息”用特定算法进行加密后的串。
  Token由被Base64的msg编码串+先256加密msg再进行Base64编码,两个串的内容结合。
2.Token的加密
  首先,是按照合适的加密方法对数据进行加密。这里我们通用的就使用了sha256散列算法,然后进行BASE64的格式转换。然后,我们需要在token串中隐含过期时间的设定,这种机制要保证,每条    与服务器交互的Token有过期时间控制,一旦token过期服务器不处理请求。
3.Token的验证校验
  当用户向服务提出访问请求时,产生Token再提交给服务器的时候,服务器需要判断token的有效性(是否过期,签名有效),一旦传向服务器的请求中的Token异常,就可以判定是可疑行为不做处理,  返回异常提示。
a. Token解包
先把接受到的token,进行分解,“.”为分隔符,分为msg部分+signature签名部分。
b. 比对签名
对msg部分的base64码反向decode_base64(msg)解码,在对解码后的msg明文,进行同样的encode_base64(sha256(msg))签名串转换处理。如果密锁相同,判断加密后的数据和客户端传过来的token.signature的部分是否一致。如果一致,说明这个token是有效的。
c. 判断时间过期