RxJavaJava服务器端编程编程语言爱好者

Web常用攻击手段-CSRF攻击

2020-11-19  本文已影响0人  迦叶_金色的人生_荣耀而又辉煌

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


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

和XSS的区别

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

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

异常情况

解决办法:
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
<<<安全架构整体设计方案

上一篇下一篇

猜你喜欢

热点阅读