美文网首页渗透测试
CSRF重现与防御

CSRF重现与防御

作者: littlebin404 | 来源:发表于2019-11-12 16:03 被阅读0次

CSRF介绍:

尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。

攻击者欺骗管理员点击http://ip:8080/GIplatform/AllServlet?id=2&methodName=2

达到将id=2的用户删除的目的,从而造成csrf攻击!

漏洞重现:

使用burpsuit构建poc:

欺骗管理员点击该按钮 Id为2用户删除成功,即csrf攻击成功!!

防御方案:

1.校验refer:

java实现代码,校验不通过返回登录页面

2.提交表单时添加token:

创建TokenUtil.java,生成token和校验token,将生成的token值放到url链接中,避免csrf攻击:

添加token成功!

3.对于用户修改删除等操作最好都使用POST操作

4.避免全站通用的cookie,严格设置cookie的域

最后,分享一下TokenUtil.java源码:

public class TokenUtil {

// 设置30分钟过期

private static final long EXPIRE_DATE = 30 * 60 * 1000;

// token秘钥

private static final String TOKEN_SECRET = "EQIUBFKSJBFJH2367816BQWE";

public static String GenerateToken(String username, String password) {

String token = "";

try {

// 过期时间

Date date = new Date(System.currentTimeMillis() + EXPIRE_DATE);

// 秘钥及加密算法

Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);

// 设置头部信息

Map<String, Object> header = new HashMap<String, Object>();

header.put("typ", "JWT");

header.put("alg", "HS256");

// 携带username,password信息,生成签名

token = JWT.create().withHeader(header)

.withClaim("username", username)

.withClaim("password", password).withExpiresAt(date)

.sign(algorithm);

} catch (Exception e) {

e.printStackTrace();

return null;

}

return token;

}

public static boolean verify(String token) {

try {

Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);

JWTVerifier verifier = JWT.require(algorithm).build();

System.out.println("验证token:" + token);

DecodedJWT jwt = verifier.verify(token);

return true;

} catch (Exception e) {

e.printStackTrace();

return false;

}

}

相关文章

  • CSRF重现与防御

    CSRF介绍: 尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过...

  • 2018-03-29

    CSRF的攻击与防御 一、CSRF简介 CSRF(Cross-Site Request Forgery,跨站点伪造...

  • Laravel - CSRF 攻击与防御

    CSRF攻击与防御-start 什么是CSRF攻击?CSRF是跨站请求伪造(Cross-site request ...

  • 安全包开发整体架构

    SSRF防御 SSRF安全漏洞以及防御实现 XSS防御 xss漏洞以及防御实现 CSRF防御 CSRF安全漏洞以及...

  • 8-1、axios其他功能实现

    1、withCredentials 修改类型定义: 修改实现 2、CSRF防御 CSRF的防御手段有很多,比如验证...

  • Django CSRF防御具体流程

    ​Django对CSRF的防御主要由django.middleware.csrf.CsrfViewMiddlewa...

  • CSRF攻击与防御

    转载地址:http://www.phpddt.com/reprint/csrf.html CSRF概念:CSRF跨...

  • CSRF攻击与防御

    转载地址:http://www.phpddt.com/reprint/csrf.htmlCSRF概念:CSRF跨站...

  • CSRF攻击与防御

    CSRF概念:CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存...

  • CSRF攻击与防御

    一、CSRF 背景与介绍 CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种...

网友评论

    本文标题:CSRF重现与防御

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