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!');}}
我在使用 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!');}}