PHP cURL Google reCaptcha2 Header 注入

PHP cURL Google reCaptcha2 Header Injection

我在使用 cURL 和 Google reCaptcha2 时遇到了一些麻烦,以避免 "Robot" & "Spammer" Auto-Reg。

所以我选择了 google 的 reCaptcha2 来检查 WWW 站点上的用户。

问题:

查看代码后,我发现有一个 Header Injection in 'curl_setopt_array' via '$curlConfig'

由于 PHP File getContent 被 PHP 配置阻止,我的服务器端 reCaptcha 使用 cURL。

我的验证码:

if (isset($_POST['g-recaptcha-response'])) {
$captcha = $_POST['g-recaptcha-response'];
$privatekey = '######### Priv Key ###############';
$url = 'https://www.google.com/recaptcha/api/siteverify';
$data = array(
    'secret' => $privatekey,
    'response' => $captcha,
    'remoteip' => $_SERVER['REMOTE_ADDR']
);



$curlConfig = array(
    CURLOPT_URL => $url,
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POSTFIELDS => $data
);

$ch = curl_init();
curl_setopt_array($ch, $curlConfig);
$response = curl_exec($ch);
curl_close($ch);}

因此,结果我们从 json 字符串中解码数据:

$jsonResponse = json_decode($response);
if ($jsonResponse->success == "true") { Good } else { Exit not good! }

注射?数据=数组? $发球?

感谢帮助

我在这里没有看到任何代码注入漏洞,但是您没有向我们展示您如何处理根本没有 g-recaptcha-response 在 POST 请求中的事件。最有可能的是,您不处理该事件,黑客需要做的就是根本不发送 g-recaptcha-response 字段来通过您的验证码。而不是 if (isset($_POST['g-recaptcha-response'])) ,做类似 if (empty($_POST['g-recaptcha-response'])) {http_response_code(400);die('no captcha answer provided!');}}