2017-03-26 6 views
0

나는 이론적 인 질문이나 어리석은 질문을하고 있지만 실제로 대답을 알고 싶다. 이제 장고를 사용하여 양식을 작성하는 스팸을 방지하기 위해 Google reCaptcha로 웹 사이트를 작성합니다. 모든 제출에 "나는 로봇이 아닙니다."라는 메시지가 표시되도록 Google reCaptcha를 건너 뛰지 않도록 js를 설정했습니다.Google reCaptcha 유효성 검사가 실패 할 수 있습니까?

내 질문에 양식 제출이 스팸 (로봇이 아님)으로 증명되지 않은 경우 사이트를 일치시키는 비밀 키를 사용하여 Google reCaptcha의 유효성을 검사하기 위해 views.py에서 구문을 작성해야하는 이유는 무엇입니까? 키? 어떤 상황에서 스팸에 의한 제출은 백엔드 검증이 아닌 Google reCaptcha를 통과 할 수 있습니까?

순수 이론적 인 질문 일지라도 내가하고있는 일을 참조하고 싶다면 제 코드를 첨부합니다. 고마워.

템플릿 :

<form id="contact_form" class="form-horizontal" method="post" action="{% url 'contact' %}"> 
    {% csrf_token %} 



<div class="form-group"> 
    <span id="name_err" style="color:red; bold: false; font-size:1vw; padding-left:1vw; display:none">Please enter your name</span> 
    <label class="control-label col-sm-2" for="name">Name:</label> 
    <div class="col-sm-10"> 
     <input type="text" class="form-control" id="name" name="name" placeholder="Enter name here"> 
    </div> 
</div> 
<script src='https://www.google.com/recaptcha/api.js'></script> 
<div style="padding-left: 11vw;" class="g-recaptcha" data-sitekey="xxx"></div><br> 
<div style="padding-left: 11vw;" id="submit-div"><input type="submit" value="post" class="btn btn-primary"></div> 

views.py

if request.method == 'POST': 

contact_name = request.POST.get('name') 
contact_email = request.POST.get('email') 
contact_subject = request.POST.get('subject') 
contact_message = request.POST.get('message') 
recaptcha_response = request.POST.get('g-recaptcha-response') 

url = 'https://www.google.com/recaptcha/api/siteverify' 
values = { 
    'secret': settings.GOOGLE_RECAPTCHA_SECRET_KEY, 
    'response': recaptcha_response 
}    
data = urllib.parse.urlencode(values).encode() 
req = urllib.request.Request(url, data=data) 
response = urllib.request.urlopen(req) 
result = json.loads(response.read().decode()) 
''' End reCAPTCHA validation ''' 

답변

1

난 당신이 응답이 웹 페이지에 대한 유효한지 검증하는, 당신이 요구하는 것을 완전히 모르겠지만 , 사용자는 다른 서버에서 reCaptcha 응답을받은 다음 양식 제출에이를 삽입 할 수 있습니다.

recaptcha_response은 유효한 응답일지도 모르지만 사이트에 대한 응답이 아닐 수 있습니다. 도움이되기를 바랍니다.

+0

감사합니다. 하지만 사이트에 유효한 recaptcha_response를 쉽게 삽입 할 수 있습니까? –

+0

은 (는) 귀하의 사이트에서 유효합니다. –