SpringBoot 는 어떻게 XSS 주입 공격 을 방지 합 니까?
4606 단어 springbootxss공격 하 다.
크로스 스 크 립 트(XSS)공격 에서 공격 자 는 피해자 의 브 라 우 저 에서 악성 스 크 립 트 를 실행 할 수 있 습 니 다.이러한 공격 은 일반적으로 웹 페이지 에 악성 코드(JavaScript)를 삽입 함으로써 이 루어 진다.공격 자 는 공격 사용 후 일반:
웹 페이지 내용 수정
공격 당 한 사용자 가 프로그램 에서 더 높 은 권한 을 가지 고 있다 면.공격 자 는 응용 프로그램 을 완전히 제어 하고 모든 사용자 와 데 이 터 를 파괴 할 수 있다.
XSS 공격 유형
흔히 볼 수 있 는 XSS 공격 은 주로 세 가지 가 있 는데 그것 이 바로 저장 형 XSS 공격,반사 형 XSS 공격 과 DOM-based 형 XSS 공격 이다.
다음은 북 을 만 들 고 데이터베이스 에 저장 하 는 간단 한 POST 방법 입 니 다.
@RestController
@RequestMapping("/books")
public class BookController {
@Autowired
IBookService bookService;
@PostMapping
public void saveBook(@RequestBody Book book) {
bookService.save(book);
}
}
저 희 는 저장 할 때 type 값 을 js 주입 하여 저장 형 XSS 공격 을 모 의 할 수 있 습 니 다.지금 우리 가 요청 하 겠 습 니 다.이곳 의 자 바스 크 립 트 는 alert 한 문장 만 사용 할 수 있 지만,이러한 구멍 은 다른 사람 에 게 이용 되 어 다른 악성 코드 를 주입 할 수 있 습 니 다.
X-XSS-보호 응답 헤드
일부 브 라 우 저 에는 필터 반사 형 XSS 공격 에 대한 지원 이 내장 되 어 있다.어느 정도 XSS 보호 에 도움 이 됩 니 다.HTTP 응답 헤더 에 다음 과 같은 내용 을 추가 하여 이 기능 이 활성화 되 었 는 지 확인 하고 브 라 우 저 에 XSS 공격 이 감지 되 었 을 때 차단 하도록 지시 해 야 합 니 다.
X-XSS-Protection: 1; mode=block
프로젝트 가 Spring Security 를 도입 하면 기본 값 으로 이 레이 블 을 자동 으로 추가 합 니 다.Content-Security-Policy 응답 헤더 추가
호 환 콘 텐 츠 보안 정책 브 라 우 저 는'허용'열 거 된 도 메 인 에서 받 은 원본 파일 에서 불 러 온 스 크 립 트 만 실행 하고 내 연 스 크 립 트 와 같은 모든 스 크 립 트 를 무시 합 니 다.브 라 우 저의 콘 텐 츠 보안 정책 기능 을 사용 하기 위해 아래 레이 블 을 추가 할 수 있 습 니 다.
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
httpSecurity
.csrf().disable()// XSS , CSRF 。 。
.authorizeRequests().anyRequest().authenticated()
.and().httpBasic()
.and()
.headers().contentSecurityPolicy("script-src 'self'");
}
}
다음은 CSP 를 지원 하 는 모든 브 라 우 저 입 니 다.입 참 검증
이 필드 는 중국어 영문 과 숫자 문자 만 필요 하 다 는 것 을 알 고 있 기 때문에 Spring 의 Validator 를 사용 하여 필드 에@Pattern 주 해 를 추가 할 수 있 습 니 다.
@NotNull
@Pattern(message=" ", regexp = "[\u4e00-\u9fa5_a-zA-Z0-9]+")
private String type;
그리고@Valid 를 Book 을 받 는 방법 에 추가 하면 요청 이 발생 하면 자동 으로 검 증 됩 니 다.
@PostMapping
public void saveBook(@RequestBody @Valid Book book) {
bookService.save(book);
}
클 라 이언 트현재 주류 의 몇 가지 전단 구 조 는 Angular,React,Vue 와 같이 전통 적 인 개발 이 가 져 올 수 있 는 문 제 를 피 할 수 있다.
XSS 의 빈틈 을 방지 하 는 것 은 주로 다음 과 같은 조치 의 조합 과 관련된다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin Springboot -- 파트 14 사용 사례 REST로 전환하여 POST로 JSON으로 전환前回 前回 前回 記事 の は は で で で で で で を 使っ 使っ 使っ て て て て て リクエスト を を 受け取り 、 reqeustbody で 、 その リクエスト の ボディ ボディ を を 受け取り 、 関数 内部 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.