Web常用攻击手段-CSRF攻击

作者: 迦叶_金色的人生_荣耀而又辉煌 | 来源:发表于2020-11-19 08:29 被阅读0次

    上一篇 <<<Web常用攻击手段-Http请求防盗链
    下一篇 >>>Web常用攻击手段-上传文件漏洞


    CSRF攻击:(Cross Site Request Forgery, 跨站域请求伪造),黑客通过抓包工具分析令牌、cookie等信息并伪造客户请求。
    就是大家熟知的钓鱼网站。

    和XSS的区别

    XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站,所以被认为比XSS更具危险性。

    如何防御--(使用token令牌)

    • 1.服务端提供令牌获取接口,令牌有有效期,存到JVM或redis中
      1. 客户端每次在调用接口的时候,需要在请求头中传递令牌参数,一旦使用之后,就会被删除,保证每个令牌只能用一次。

    异常情况

    • a、如果用户提前获取多个token,然后恶意重复提交?
    • b、使用httpclient机器模拟请求?

    解决办法:
    a、启用图形验证码(动态图案)防止机器模拟
    b、修改密码、下单、支付、转账等核心业务,通过短信验证码、图片识别和人脸识别灯技术进行二次确认,保证是本人操作。
    c、Nginx实现限流并设置黑白名单,请求数达到多少就给拦截进入到黑名单中

    public static  String getToken() {
        // 1.生成令牌,保证全局
        String token = UUID.randomUUID().toString();
        // 2.存入tokenMap,value可以存真正业务ID,保证使用者拥有token的权限
        //ConcurrentHashMap 底层已经保证了线程安全
        tokenMap.put(token, token);
        return token;
    }
    // 验证token,并且删除对应的token
    public static Boolean exisToken(String token) {
        // 1.从集合中获取token
        Object result = tokenMap.get(token);
        if (result == null) {
            return false;
        }
        // 2.删除对应的token
        tokenMap.remove(token);
        return true;
    }   
    
    // 获取Token
    @RequestMapping("/getToken")
    public String getToken() {
        return TokenUtils.getToken();
    }
    
    // 验证Token
    @RequestMapping(value = "/addOrder", produces = "application/json; charset=utf-8")
    public String addOrder(@RequestBody OrderEntity orderEntity, HttpServletRequest request) {
        String token = request.getHeader("token");
        if (StringUtils.isEmpty(token)) {
            return "参数错误!";
        }
        if (!TokenUtils.exisToken(token)) {
            return "请勿重复提交!";
        }
        int result = orderMapper.addOrder(orderEntity);
        return result > 0 ? "添加成功" : "添加失败" + "";
    }
    

    SSO的实现方式是token+本地cookie,如何防止被模拟

    解决办法:
    a、token本身有有效期,但令牌的时间一般都是30天很长
    b、生成token时,绑定客户端的设备ID、IP信息、浏览器信息等,有一定的防御效果,但黑客也是会模拟的
    c、所有查询返回的数据中,对敏感数据进行脱敏操作
    d、核心业务的接口必须加上短信验证码、刷脸验证等,确保是本人在操作。


    相关文章链接:
    <<<Web常用攻击手段-XSS攻击
    <<<Web常用攻击手段-SQL注入
    <<<Web常用攻击手段-Http请求防盗链
    <<<Web常用攻击手段-上传文件漏洞
    <<<Web常用攻击手段-忘记密码
    <<<Web常用攻击手段-其他漏洞
    <<<安全技术--数据加密/认证技术
    <<<安全技术--Https相关知识
    <<<安全技术--接口幂等性设计
    <<<安全框架--SpringSecurity
    <<<安全框架--JWT
    <<<安全框架--OAuth2
    <<<安全架构整体设计方案

    相关文章

      网友评论

        本文标题:Web常用攻击手段-CSRF攻击

        本文链接:https://www.haomeiwen.com/subject/awktiktx.html