【问题标题】:Google ReCaptcha Front-End SolutionGoogle ReCaptcha 前端解决方案
【发布时间】:2016-12-03 17:55:57
【问题描述】:

我想使用 Google ReCaptcha,但我也不想接触服务器端或后端代码。

我正在使用 ASP.Net MVC,但我也不想使用 nuget 或任何库中的任何包。解决方案必须仅是前端。接受所有 javascript/jquery 解决方案。

我还注意到我的表单正在收集数据并将其作为电子邮件发送到指定邮箱。我也没有在这个过程中使用任何 3rd 方库。它仅由 ASP.Net MVC 手动编码。

【问题讨论】:

  • 使用java脚本,grecaptcha.getResponse()
  • Google 的 Recaptcha 等解决方案的重要部分是与服务器端的通信。这是因为前端代码很容易被阅读、破解甚至完全替换。假设您有captcha_challenge(),如果用户设法解决验证码,则返回true。现在我进入源代码并将您的函数替换为function captcha_challenge() { return true; }。我再次单击该按钮,然后就进入了。仅在前端实现诸如验证码或密码加密之类的东西确实没有意义。您需要一个后端才能安全地工作。
  • 您好,根据 Google 的建议,Google recaptcha 有两个步骤。第一步是 UI 集成。第二步是后端集成。如果没有后端集成,您将无法获得 google recaptcha 的全部好处。

标签: javascript jquery asp.net-mvc recaptcha


【解决方案1】:

感谢 Ivo Coumans 的详细解释。我让它工作了,但显然它不安全。 Rinto Antony 给了我一个想法,这就是我的工作。

我正在调用 Google ReCaptcha API 到我网站的 head 部分并添加创建验证码的 div:

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

由于 data-callback 正在触发 enableBtn 函数,如果它返回 true,则可以采取行动。所以我在表单中添加了一个禁用的提交按钮。

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

然后我添加了一个简单的 javascript 来启用它:

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

我知道这很容易被绕过,并不是真正的解决方案,但它正在工作。我愿意接受任何可以使这变得更好的想法。

【讨论】:

    【解决方案2】:

    除非您使用 CMS,否则您必须在后端放置一些代码,因为您将使用 reCAPTCHA 发出 POST 请求。

    我强烈推荐 wordpress,因为它只需下载一个插件,然后复制密钥并粘贴即可。

    【讨论】:

    • 仅评论。请提出解决方案
    • 任何 cmets 都应作为对原始问题的评论添加。如果您有解决方案,请添加代码作为解决方案。 PS:您无法使用仅使用 UI 验证的 Google recaptcha 获得完整的解决方案。然而,这不是重点。重点是,请将您的评论添加为对原始问题的评论,而不是作为解决方案,除非您有。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    相关资源
    最近更新 更多