반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Windows Kernel Driver
- ucrtbase.dll
- apphelp.dll
- 윈도우 커널 드라이버
- arudino
- 네트워크 바이트 오더
- windows kernel debugging
- IAT Hooking
- pcap packet capture
- 개발하기
- pwnable
- 윈도우 커널 디버깅
- vcruntime140.dll
- 시스템해킹
- Windows
- C언어 패킷캡쳐
- 해킹
- HackCTF
- pcap packet
- 윈도우 커널
- Windows Kernel
- Network Byte Order
- packet capture
- Windows Kernel Debug
- 포너블
- Msvcrt.dll
- 바이트 오더
- 개발 환경 준비
- hacking
- vcruntime.dll
Archives
- Today
- Total
미친해커
[Web] Python Flask Google reCAPTCHA v3 적용하기 본문
반응형
구글의 reCAPTCHA를 적용하려고 검색하던 도중 버전이 v2와 v3(v1은 지원이 종료됨) 이렇게 2가지가 존재한다는 것을 알게되었다. 또 직접 사용해보면서 차이점을 알게되었다. v3는 로봇이 아닙니다와 다르게 점수를 이용해 로봇인지를 파악한다. (필자도 아직 어떠한 식으로 로봇을 판단하는지 잘 모르겠다) 우선 reCAPTCHA 사이트 접속하자.
사이트에 들어가 다음과 같이 등록해준다.
도메인에는 실제 본인의 도메인을 넣도록한다. 필자는 127.0.0.1 localhost로 웹 서버를 열어 테스트를 진행할 예정이라 127.0.0.1으로 등록했다. 이후 제출 버튼을 누르면 다음과 같은 화면을 볼수 있다.
사이트 키 : 웹 사이트에서 토큰을 발급받기 위해 사용하는 키
비밀 키 : 웹 서버가 토큰이 유효한지 확인하기 위해 사용하는 키
이렇게 정상적으로 키가 발급되었다면 이제 Python 라이브러리를 다운받도록 하자
$ pip install flask
$ pip install requests
# 서버 코드
# file name : run.py
import requests
from flask import Flask, request, render_template
app = Flask(__name__)
RECAPTCHA_API_URL = 'https://www.google.com/recaptcha/api/siteverify'
RECAPTCHA_SITE_KEY = '사이트 키'
RECAPTCHA_SECRET_KEY = '비밀 키'
@app.route('/', methods=['GET', 'POST'])
def default():
message = ''
if request.method == 'POST':
grecaptcha = request.form.get('g-recaptcha-response')
remoteip = request.remote_addr # Client의 IP 주소를 필수가 아니다.
data = {'secret':RECAPTCHA_SECRET_KEY, 'response':grecaptcha, 'remoteip':remoteip}
data = requests.get(RECAPTCHA_API_URL, params=data).json()
if data['success']:
if data['score'] > 0.5:
message = 'success'
else:
message = 'maybe robot'
else:
message = 'failed'
return render_template('v3.html', message=message, RECAPTCHA_SITE_KEY=RECAPTCHA_SITE_KEY)
<!-- file name : v3.html -->
<!DOCTYPE html>
<html>
<head>
<title>Flask ReCaptcha Tutorial</title>
<script src="https://www.google.com/recaptcha/api.js?render={{ RECAPTCHA_SITE_KEY }}"></script>
<script type="text/javascript">
function get_recaptcha()
{
grecaptcha.execute("{{ RECAPTCHA_SITE_KEY }}").then(function(token) {
document.getElementById('g-recaptcha-response').value = token;
});
}
</script>
</head>
<body>
<form method="POST">
<input type="submit">
<!-- 토큰 값을 받아 저장할 태그 -->
<input type="hidden" name="g-recaptcha-response" id="g-recaptcha-response" />
</form>
<p>{{ message }}</p>
<button onclick="get_recaptcha()">캡챠 코드 발급</button>
</body>
</html>
아래 압축파일에 미리 환경을 셋팅해뒀다. 잘 모르겠다면 다운받아서 run.py 만 실행하면 된다.
웹 사이트를 가동시켜 확인해보면 정상적으로 동작하는 것을 볼수 있다.
reCAPTCHA v3는 v2와 다르게 인증 토큰을 자바 스크립트를 이용해 발급받고 서버에서 해당 토큰을 발급 받은 자에 대한 점수를 매긴다. 점수는 0.0 ~ 1.0 점으로 사이로 나오고 1.0 점에 가까울 수록 사람에 가깝다는 것이 된다. 즉 success로 캡챠 성공여부를 확인하고 score로 점수를 확인하여 본인이 충족해야한다고 하는 점수 이상이라면 사람으로 판단하고 처리할 수 있는 것이다.
반응형
'Web' 카테고리의 다른 글
[Web] Python Flask Google reCAPTCHA v2 적용하기 (0) | 2022.01.06 |
---|
Comments