본문 바로가기
회고

TIL_211109

코동이 2021. 11. 10.

1. Facts(사실, 객관)

 

- 프로젝트 csrf 설정

 

2. Feelings(느낌, 주관)

 

물론, 이제 웹은 front-end와 back-end가 각각 api를 가지고 통신하는 것이 대세지만, 아쉽게도 현재 유지보수하는 프로젝트는 spring - jsp 입니다. 따라서 적용되는 spring security 방식에도 조금 차이가 있습니다. 이와중에 csrf토큰 설정에 관심을 가졌습니다. 궁금했던 것은, 기존에 왜 common 쪽의 post 요청은 csrf토큰을 전달하지 않을까? 로 시작해서 csrf 토큰 설정을 계획했습니다. 이렇게, 하나씩 프로젝트의 기존 설정들이나 코드들을 분석하고 좋은 방식으로 개선할 수 없는지 둘러보는 재미가 있습니다. 개발 트렌드와는 조금 거리가 멀 수 있지만, jsp에서 csrf 토큰 설정을 확인하며 문제해결의 재미와 개선할 수 있어서 좋았습니다.

 

3. Findings (배운 점)

 

 ajax로 post 요청을 할 때, 기존에 csrf 토큰을 보내는 방식은 여러개이다.

 

1. ajax data에 form을 serialize()해서 보내기

2. form 안에 input type hidden으로 csrf 토큰 설정하기

 

jquery.form.js 플러그인을 사용해서 formData의 한계를 극복하고 Multipart/form-data를 보낼 수 있다. 해당 플러그인이 제공하는 ajaxSubmit()이 있는데, 이를 통해, 낮은 IE버전에도 첨부파일을 ajax로 정상적으로 보낼 수 있다. 이때, data를 명시하지 않기 때문에 1번 방식을 사용할 수 없고, 2번 방식또한 먹히지 않는다. 그래서 파일 업로드 부분에서 csrf 토큰 사용 제외를한 것으로 예상하지만 방법이 있다.

 

 beforeSend : function(xhr) {
	xhr.setRequestHeader('X-CSRF-Token', 
			$('input[name="${_csrf.parameterName}"]').val()
	)
}

 

beforeSend로 csrf 토큰 설정을 할 수 있다. 따라서 post 요청을 하기 전에 header에 토큰 값을 넣어서 전송한다. 이를 통해서 정상적으로 csrf토큰을 이용해서 안전하게 ajax post를 보낼 수 있게 되었다.

 

 

4. Affirmation (자기 선언)

- 나는 기존에 시스템의 위험부분을 꼼꼼히 확인하고 개선하는 개발자이다.

반응형

'회고' 카테고리의 다른 글

TIL_211111  (0) 2021.11.12
TIL_211110  (0) 2021.11.11
TIL_211108  (0) 2021.11.09
TIL_211028  (0) 2021.10.28
TIL_211027  (0) 2021.10.27