0
点赞
收藏
分享

微信扫一扫

Web常用攻击手段-CSRF攻击

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


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

和XSS的区别

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

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

异常情况

  • a、如果用户提前获取多个token,然后恶意重复提交?
  • b、使用httpclient机器模拟请求?
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,如何防止被模拟


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

举报

相关推荐

0 条评论