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进攻怎样预防?的详细内容,大量请关注其他类似文章!