ZVVQ代理分享网

java框架中的CSRF攻击如何预防?(csrf攻击的危害

作者:zvvq博客网
导读java 框架中预防 csrf 攻击的方法包括:使用 csrf 令牌:生成并存储随机字符串以验证请求的合法性。同源策略:限制来自不同域的请求,防止跨域 csrf 攻击。referer 头检查:验证 referer

java 框架中防止 csrf 攻击方法包括:应用 csrf 令牌:形成并存放随机字符串以验证要求的合法性。同源策略:限定来自不同域的要求,避免跨域 csrf 进攻。referer 头查验:认证referer 头是否与应用软件 url 配对,以排除跨域 csrf 进攻。httponly cookie:严禁浏览器根据 javascript 浏览 cookie,减少对话 cookie被盗取风险。

Java 框架中的 CSRF 进攻防止

介绍

跨网站要求仿冒 (CSRF) 进攻是一种黑客攻击,攻击者运用受害人的合法对话令牌向远程 Web 应用软件推送故意要求。在 Java 框架中,有几种方法能够防止 CSRF 进攻。

预防方法

1.应用 CSRF 令牌

CSRF令牌是一个随机字符串,在账号登录时形成并存储在客户的对话中。在每个表单提交要求中,都包括此令牌。服务器认证要求令牌是否匹配对话里的令牌。假如不一致,则拒绝请求。

SpringFramework

//形成 CSRF 令牌

CsrfToken csrfToken = csrf().generateToken(request);

// 在视图中包括 CSRF 令牌

// 认证要求令牌

if (csrf().isTokenValid(request)) {

// 解决表单提交

}

2. 同源策略

同源策略限定浏览器仅允许来自与要求根源同样的域的要求。以在应用程序中强制执行同源策略,能够防止跨域的 CSRF 进攻。

SpringFramework

//开启同源策略

http.headers().frameOptions().sameOrigin();

3. Referer 头查验

Referer头包括发出请求的原始 URL。进行检查 Referer 头是否与应用程序的 URL配对,可以排除跨域的 CSRF 进攻。

SpringFramework

//开启 Referer 头查验

http.headers().contentTypeOptions().header("Referer").deny;

4.HttpOnlyCookie

HttpOnly标识严禁浏览器根据 JavaScript 浏览 cookie。这使得攻击者难以盗取对话 cookie并使用它去执行 CSRF 进攻。

SpringSecurity

//开启HttpOnly cookie

http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.ALWAYS).and()

.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());

实战案例

SpringBoot运用

@SpringBootApplication

public class App {

public static void main(String[] args) {

SpringApplication.run(App.class, args);

}

@PostMapping("/submit")

public String submit(@RequestParam String token) {

// 认证 CSRF 令牌

if (csrf().isTokenValid(request)) {

// 解决表单提交

...

}

}

}

HTML视图

以上就是java框架中的CSRF进攻怎样预防?的详细内容,大量请关注其他类似文章!