2016-07-29 88 views
1

我想使用Google ReCaptcha,但我也不想觸摸服務器端或後端代碼。Google ReCaptcha前端解決方案

我使用ASP.Net MVC,但我也不想使用nuget或任何庫中的任何包。解決方案必須僅限於前端。所有JavaScript/jQuery解決方案都被接受。

我還注意到我的表格正在收集數據並將其作爲電子郵件發送到指定的郵箱。我也沒有在這個過程中使用任何第三方庫。它只能通過ASP.Net MVC手動編碼。

+1

使用java腳本,grecaptcha.getResponse() –

+2

解決方案的重要部分,如Google的Recaptcha是與服務器端的通信。這是因爲前端代碼很容易被讀取,破解甚至徹底取代。假設你有'captcha_challenge()',如果用戶設法解決驗證碼則返回'true'。現在我進入源代碼並用函數替換你的函數captcha_challenge(){return true; }'。我再次點擊該按鈕,我就進來了。在前端只實現像驗證碼或密碼加密這樣的東西實在沒有意義。你*需要*後端才能安全地工作。 –

回答

0

感謝Ivo Coumans的詳細解釋。我得到它的工作,但顯而易見,這是不安全的。 Rinto Antony在這裏給了我一個想法,就是我所做的。

我打電話了谷歌的reCAPTCHA API來領導我的網站的部分並添加創建驗證碼股利:

<div class="g-recaptcha" data-sitekey="api_key" data-callback="enableBtn"></div> 

由於數據回調觸發enableBtn功能,有可能採取行動,如果它返回真實。所以我添加了一個禁用的提交按鈕到我的表單。

<input type="submit" value="Gönder" id="button1" disabled> 

然後我添加了一個簡單的JavaScript來啓用它:

<script type="text/javascript"> 
    function enableBtn() { 
    document.getElementById("button1").disabled = false; 
} 
</script> 

我知道這可能很容易被繞過,而不是一個真正的解決方案,但它工作。我願意接受任何可以使這一點變得更好的想法。

0

除非您使用CMS,否則您必須在後端放置一些代碼,因爲您將使用reCAPTCHA發出POST請求。

我強烈推薦wordpress,因爲它只是下載插件,然後只是複製密鑰並粘貼它們。