正在验证验证码
Q1 - 我一直在阅读reCaptcha的文档,查看了许多不同的论坛案例,但我根本没有使用API调用经验 - 我试图添加一个验证码到我的自定义联系表单中,但我试图弄清楚如何/在哪里发送验证信息以及如何/在哪里接收验证步骤,以便我知道用户是否得到验证。正在验证验证码
(边问:为什么要验证由验证码生成的令牌是不是够好了,你可以告诉天气或不拼图/回答解决了?)
封闭头前标签:
<script src='https://www.google.com/recaptcha/api.js'></script>
我的形式结束:
我可以看到串/令牌由一个正确的答案产生的,当我打电话:
grecaptcha.getResponse();
现在(据我所知)我要验证这个字符串/令牌这是我卡住:
URL: https://www.google.com/recaptcha/api/siteverify
METHOD: POST
DOCS:https://developers.google.com/recaptcha/docs/verify
我与jQuery和香草相对体面JS,但是当涉及到API调用时,我几乎没有经验,这就是为什么在文档中,我不确定如何1 - 形成API调用(用于验证),2 - 在哪里调用API从模板文件 - 明智的,3 - 如何获得响应,或者更确切地说响应如何回来。
正如我所提到的,我正在使用Bigcommerce商店,并且在几个不同的领域中提到了Google reCaptcha文档,这一步在服务器端(或应该是)完成。我知道我在我可以修改的模板文件中受到相当的限制 - 我可以查看和修改HTML/CSS/JS文件,但我无法访问任何PHP。
任何帮助或推动正确的方向将不胜感激 - 在这一点上,我正在圈子寻找并尝试阅读/遵循相同的文档(谷歌和其他)和论坛的情况。谢谢。
reCaptcha验证是为了确保您收到的答案来自reCaptha服务器,用户不是机器人,还没有成熟,并且它还没有被使用过多次。
所有这些对于运行应用程序的服务器来说都非常重要,更多的是显示表单的客户端接受或拒绝要处理的表单。
这就是验证必须在服务器上完成的原因。客户端是一个不安全的环境,可以被欺骗,因此服务器不能相信它。
此外,做验证你需要一个秘密API密钥。因为它是秘密的,它不能嵌入到客户端代码中。
如果您无法访问php或无法添加和aditional php来进行验证,我认为您不能实施reCaptcha。
编辑我
的底线是,客户端代码(JS,jQuery的浏览器中运行)不能被信任做任何验证从服务器的角度来看。
例如,假设您为用户实现了一个输入元素,以输入介于0和9之间的两个随机整数之和的结果。非常简单。
在一些地方的JavaScript代码有一个:
if(a + b === c){
sendFormToServer();
}else{
reject();
}
任何使用浏览器的开发者工具可以绕过“如果”,并直接调用sendFormToServer()。而服务器无法知道它。
试图一个接一个地回答你的问题。
客户端验证码被讨论here,请检查并注意考虑到Java脚本的强大功能,客户端验证码不安全。
-
reCAPTCHA的工作原理:一旦有人举出以下脚本,谷歌将验证 用户。
https://www.google.com/recaptcha/api.js
下面写在窗体属性将发送数据到google第一和 响应将与 属性的当前形式命名的最终后加入克-验证码 - 响应:
<div class="g-recaptcha" data-sitekey="your_site_key"></div>
-
如何验证reCAPTCHA必须使用谷歌验证此g-recaptcha响应。 [注:这是requried becaues 客户端可以为属性克-reCAPTCHA的响应 发送任何随机值,而无需通过验证码会]
$verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify? secret='.$YOUR_SECRET.'&response='.$_POST['g-recaptcha-response']) /*allow_url_fopen must be ON if you want to use file_get_contents. check it using phpinfo();*/ file_put_contents("logfile", $verifyResponse, FILE_APPEND); $responseData = json_decode($verifyResponse); $register_result = 'Robot verification failed, please try again.'; if($responseData->success) { $register_result = 'You are not a bot'; } else $register_result = 'You are a bot.';
验证码与HTML/JS/CSS验证码将无法正常工作为你,如果你没有PHP访问。
作为验证码的谜题验证码谜题也是可能的,这样的验证码也可用,但它们在服务器端处理。
Hi Tron,BC本身已经支持captcha,所以你不需要自己实现一个。在创建页面时,显示设置中有一个选项,https://support.bigcommerce.com/articles/Public/Display-Settings,直接与他们联系以了解更多关于使用此设置的信息可能会有所帮助。运气好的 –
另外 - 所有的JS web请求都归结为正式称为“XMLHttpRequest”的内容。 jQuery的Ajax功能使得执行web请求变得更加简单,并且简化为几行代码。虽然研究异步执行,软件中断和JS事件循环仍然很重要,以便更好地理解底层概念。 –