2017-08-06 5 views
0

"ロボット" & "Spammer" Auto-Regsを避けるために、私はcURLとGoogle reCaptcha2にいくつかの問題があります。PHP cURL Google reCaptcha2ヘッダインジェクション

だから私はWWWサイト上のユーザーを確認するgoogle'sreCaptcha2を選んだ。

問題:

コードをチェックした後、私は Header Injection in 'curl_setopt_array' via '$curlConfig'

私のサーバーサイドreCAPTCHAのが原因PHPコンフィグによってブロック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文字列からのデータをデコード:

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

注入?データ=配列? $サーブ?ヘルプ

答えて

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!');}}

+0

のようにしてください。そうでない場合は、単にisset captchaを使用してください。{error msg blabla} – VBnoob