[java] 스프링 부트에서 캡챠 기능 구현 방법
캡챠(CAPTCHA)는 사용자가 사람인지 자동화된 프로그램인지를 구별하기 위한 보안 메커니즘입니다. 이 기능을 스프링 부트 애플리케이션에 구현하는 방법을 알아보겠습니다.
1. Google reCAPTCHA 설정
캡챠 서비스로 Google reCAPTCHA를 사용할 것이므로, 먼저 Google reCAPTCHA 사이트에 가입하여 사이트 키 및 비밀 키를 발급받아야 합니다.
2. 스프링 부트 프로젝트에 의존성 추가
build.gradle
파일에 reCAPTCHA 클라이언트 라이브러리를 추가합니다.
dependencies {
implementation 'com.google.apis:google-api-services-recaptcha:v1-rev20210309-1.31.0'
}
또한, 웹 의존성도 추가합니다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
}
3. 캡챠 유효성 검사 구현
스프링 부트 컨트롤러에서 캡챠 유효성 검사를 수행하는 메서드를 구현해야 합니다.
import com.google.api.client.http.HttpRequestFactory;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonObjectParser;
import com.google.api.services.recaptcha.Recaptcha;
import com.google.api.services.recaptcha.model.RecaptchaResponse;
@RestController
public class CaptchaController {
private static final String RECAPTCHA_SECRET_KEY = "your-secret-key";
@PostMapping("/validate-captcha")
public boolean validateCaptcha(@RequestParam("token") String captchaToken) {
try {
HttpRequestFactory requestFactory = new NetHttpTransport().createRequestFactory();
Recaptcha recaptcha = new Recaptcha.Builder(requestFactory, new JsonObjectParser()).build();
RecaptchaResponse response = recaptcha.verify().setSecret(RECAPTCHA_SECRET_KEY).setResponse(captchaToken).execute();
return response.isSuccess();
} catch (IOException e) {
// Handle exception
return false;
}
}
}
4. 사용자 인터페이스에 캡챠 추가
사용자 인터페이스에 reCAPTCHA 위젯을 추가하여 사용자로부터 캡챠 입력을 받을 수 있도록 합니다.
<form action="/validate-captcha" method="post">
<!-- 캡챠 위젯 추가 -->
<div class="g-recaptcha" data-sitekey="your-site-key"></div>
<button type="submit">Submit</button>
</form>
마무리
이제 스프링 부트 애플리케이션에 캡챠 기능을 구현할 수 있습니다. 사용자의 상호작용을 고려하여 적절한 캡챠 설정을 적용하고, 보안 측면에서 애플리케이션을 강화하세요.