>  기사  >  Java  >  Java 프레임워크가 CSRF 공격을 방지하는 방법

Java 프레임워크가 CSRF 공격을 방지하는 방법

WBOY
WBOY원래의
2024-06-01 13:29:56796검색

Java 프레임워크는 다음 메커니즘을 통해 CSRF 공격으로부터 보호합니다. 토큰 유효성 검사: CSRF 토큰을 생성하고 유효성을 검사하여 요청이 예상 소스에서 오는지 확인합니다. 동일 출처 정책: 브라우저는 교차 사이트 공격을 방지하기 위해 원래 출처로만 요청을 보냅니다. 사용자 정의 토큰 저장소: 쿠키, 헤더 또는 세션에 CSRF 토큰을 저장할 수 있습니다.

Java 프레임워크가 CSRF 공격을 방지하는 방법

Java 프레임워크가 CSRF 공격을 방지하는 방법

CSRF 공격이란 무엇입니까?

교차 사이트 요청 위조(CSRF) 공격은 공격자가 피해자가 모르는 사이에 피해자를 속여 웹 사이트에서 작업을 수행하도록 하는 일종의 사이버 공격입니다. 공격자는 피해자의 세션 쿠키를 사용하여 피해자의 신원을 가장했습니다.

Java 프레임워크는 CSRF 공격을 어떻게 방지합니까?

Spring MVC 및 JSF와 같은 Java 프레임워크는 CSRF 공격을 방지하기 위한 여러 메커니즘을 제공합니다.

토큰 유효성 검사

  • Spring MVC: 컨트롤러 메서드에서 @CsrfToken 주석 사용 CSRF 토큰 생성 에 . @CsrfToken 注释在控制器方法上生成 CSRF 令牌。
  • JSF:使用 <inputsecret></inputsecret> 标签生成 CSRF 令牌。

Same-Origin 策略

  • 确保浏览器只向其原始来源(即从该页面加载的 HTML 文档所在的服务器)发送请求。
  • Spring Security 提供了 CsrfConfigurer 配置,可指定需要 CSRF 保护的 URL。
  • JSF 使用 csrfTokenValidator 来验证 CSRF 令牌并阻止跨域请求。

自定义令牌存储

  • 可以将 CSRF 令牌存储在 cookie、header 或会话中。
  • Spring MVC 和 JSF 都允许通过配置 CsrfFilterCsrfTokenRepository
JSF:

<inputsecret></inputsecret> 태그를 사용하여 CSRF 토큰을 생성합니다.

동일 출처 정책

은 브라우저가 원래 출처(예: 페이지에서 로드된 HTML 문서가 상주하는 서버)로만 요청을 보내는 것을 보장합니다. Spring Security는 CSRF 보호가 필요한 URL을 지정하기 위해 CsrfConfigurer 구성을 제공합니다.

JSF는 csrfTokenValidator를 사용하여 CSRF 토큰을 검증하고 교차 출처 요청을 차단합니다.

사용자 정의 토큰 저장소

🎜CSRF 토큰은 쿠키, 헤더 또는 세션에 저장될 수 있습니다. 🎜🎜Spring MVC와 JSF 모두 CsrfFilterCsrfTokenRepository를 구성하여 토큰 저장소를 사용자 정의할 수 있습니다. 🎜🎜🎜🎜실제 사례: Spring MVC🎜🎜🎜🎜1. 종속성 설치: 🎜🎜
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-web</artifactId>
    <version>5.5.7</version>
</dependency>
🎜🎜2. Spring 보안 구성: 🎜🎜
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
            .and()
            // 其他安全配置
        ;
    }
}
🎜🎜3. 4. 추가 HTML 페이지의 토큰: 🎜🎜
@RequestMapping("/transferMoney")
@PostMapping
public String transferMoney(@RequestParam int amount, @CsrfToken String csrfToken) {
    // 验证令牌
    csrfTokenManager.verifyToken(csrfToken);
    
    // 执行转账操作
}

위 내용은 Java 프레임워크가 CSRF 공격을 방지하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.