【发布时间】:2016-12-13 19:10:29
【问题描述】:
我正在浏览一个小清单,升级我已经完成的网络系统部分的事情,其中之一是确保我的 Google reCaptcha 的安全性是正确的。
目前,我使用以下代码:
//reCaptcha
$Url = "https://www.google.com/recaptcha/api/siteverify";
$SecretKey = "----Secret Key----";
$Response = file_get_contents($Url."?secret=".$SecretKey."&response=".$_POST['Response']);
$Robot = json_decode($Response);
这很好用,但是 Google 的文档说您应该使用 POST 方法而不是 get,显然是为了确保有人不会掌握我的密钥。但是,我不确定如何执行此操作,因此将不胜感激。我知道我可能不得不使用 cURL,但是,我对此一无所知,并且不确定如何安装它(如果需要的话)。
谢谢,汤姆。
【问题讨论】:
-
将变量发布到 Google 的 reCaptcha 服务器,而不是通过 GET 发送。
-
但它从不使用
$_GET发送变量,它总是使用$_POST发送它们。请参阅此处的文档,https://developers.google.com/recaptcha/docs/verify。对了,$_POST['Response']打错了,应该是$_POST['g-recaptcha-response']。 -
@RajdeepPaul
$_POST['Reponse']是正确的,因为它实际上是通过 Ajax 调用检索变量,在该调用中,您不能发布名称中带有“-”的变量。关于 POST,它说发送方法应该是 post,但这是否意味着它会自动从 URL 中删除变量并改为 POST。我有点怀疑,从我使用的代码中,我将变量添加到 URL 中,就好像它是一个 GET 一样。 -
请编辑您的问题并添加 jQuery/AJAX 代码。从当前的代码中,不清楚您到底想做什么。
-
@RajdeepPaul,很清楚我在问什么。我需要知道如何将变量发布到 Google 的 reCaptcha,仅此而已。正如我在我的问题中明确指出的那样,目前一切正常,但不太可能是安全的,因此除了如何将变量发布到 reCaptcha 之外,建议任何其他“修复”都是毫无意义的。