PHP cURL谷歌reCaptcha2标头注入

时间:2017-08-06 19:06:59

标签: php curl header code-injection recaptcha

我对cURL和Google reCaptcha2有一些麻烦,以避免“机器人”& “垃圾邮件发送者”自动注册。

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

问题:

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

我的Serverside使用cURL进行reCaptcha,因为PHP Config阻止了PHP File getContent

我的reCaptcha代码:

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 String中的数据解码回来:

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

注射?数据=数组? $ Serve?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

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

之类的操作