[보안] 자동화 공격 방지 - reCaptcha v3 적용하기 By starseat 2022-11-26 00:42:47 Etc Post Tags 취야점 중 `자동화 공격 방지` 를 예방할 수 있는 방법을 소개하고자 한다. 구글에서 제공하는 `reCaptcha v3` 를 적용하면 구글이 판단하여 사용자의 점수를 기준으로 스팸글인지 정상적인 글인지 판단해주는 기능이다. # reCaptcha v3 신청 [https://www.google.com/recaptcha/admin/create](https://www.google.com/recaptcha/admin/create) 에 접속하여 관련 정보를 기입한다. 정보 작성도 어렵지 않다. ![image.png](/uploads/_temp/20221126/643e033d24fad8af46c698b63fed869e.png) 정보 작성 후 **제출** 버튼을 클릭하면 아래 그림과 같이 키가 발급된다. ![image.png](/uploads/_temp/20221126/71d0dc5ec8b9bae693ebe9c199bb3117.png) # 적용 적용하는 방법에는 여러 가지가 있겠지만 내가 적용한 방법은 다음과 같다. ## frontend 적용 `` 태그 위에 `` 와 같이 적용하였다. 또한 `` 이것도 붙여 주었다. `g-recaptcha` 에 서버에서 체크 하는 토큰 값을 추가하기 때문에 필요하다. ```html .... ``` ## backend 적용 서버는 php 로 진행하였다. form 데이터를 전달 받는 php 파일에서 다음과 같은 코드를 추가하였다. (`alert()`, `move_back()` 은 따로 만든 함수들이다.) ```php function checkCaptcha($captcha) { $data = array( 'secret' => '{비밀 키}', 'response' => $captcha, 'remoteip' => $_SERVER['REMOTE_ADDR'] ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://www.google.com/recaptcha/api/siteverify"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $response = curl_exec($ch); curl_close($ch); $responseKeys = json_decode($response, true); if ($responseKeys["success"]) { return true; } return false; } if(!checkCaptcha($_POST['g-recaptcha'])) { alert('잘못된 요청 입니다.'); move_back(); } ``` # 확인 적용이 잘 되었으면 글 작성 화면 우측 하단에 표기가 될 것이다. ![image.png](/uploads/_temp/20221126/76e0c026692332a331d6001716985d49.png) 또한 [https://www.google.com/recaptcha/admin](https://www.google.com/recaptcha/admin) 여기에 접속하면 아래와 같이 정보도 확인 가능하다. ![image.png](/uploads/_temp/20221126/2c3f1d8c68f35693269dd97da148d6ed.png) Previous Post - Next Post [os] Window 컴퓨터 빨라지게 하는 팁