본문 바로가기
SPRING

Spring 이중 등록 방지(double submit prevent)

by 스노위13 2022. 12. 8.

이중 등록 방지(double submit prevent)란 사용자가 두 번 클릭을 하거나 새로고침을 했을 때 다시 등록하는 것을 방지하는 방법이다. 다양한 방식으로 구현하는데 모두 찾아서 정리해보았다.

1. jsp에서 방지하기
0) 오류가 있는지 확인하기
- <img src="#"> 때문에 이중 등록이 되는 경우가 종종 발생하므로 이를 확인해본다.
- form에서도 submit을 하고 javascript에서도 submit을 하고있지 않는지 확인해보기
버튼 타입을 제대로 설정하지 않았거나 함수에서 e.preventDefault()로 막아두지 않아서 이중등록이 되는 경우도 있다.
1) 버튼 비활성화 하기 : 버튼을 클릭하는 순간 disable로 만들면 한 번만 클릭하게 되어 이중 등록을 방지할 수 있다. 엔터를 쳤을 때는 소용이 없기 때문에 다른 처리가 함께 필요하다.
2) flag 변수 활용하기 : flag는 boolean 값을 가진 변수로 제어구조를 처리할 때 많이 활용된다. submit을 확인하는 flag 변수를 선언한 뒤 함수 내에서 이 값을 변화시켜 막을 수 있다.
위의 두 가지 방법 참고 : Ajax로 서버에 보낼때 중복으로 보내지지 않게 하는 방법이 있나요 ?

2. Controller에서 @SessionAttributes Annotation을 이용하기
@SessionAttributes 어노테이션을 사용해서 모델을 세션에 저장한 뒤 SessionStatus.setComplete(); 하여 이중 등록을 방지하는 방법도 있다.
참고 : https://blog.naver.com/dohyungs/10046511269

3. Token 이용하기
세션에 고유한 Token을 저장하고 해당 Token을 파라미터와 비교하여 중복을 방지하는 방법이다. Token을 이용하면 이중 등록과 관련된 CSRF 공격을 방어할 수 있다.
참고 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=loverjmc&logNo=220782340305

4. 전자정부프레임워크에서 사용할 수 있는 이중등록 방지 방법
참고 : https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:com:v3:cmm:doublesubmit

'SPRING' 카테고리의 다른 글

Cotroller에서 ModelAndView 사용하기  (0) 2022.11.30

댓글