Привет, вместо использования API Paypal. Я разработал веб-страницу с использованием php и curl, чтобы проверить, проверено ли определенное электронное письмо в Paypal или нет. Чтобы сделать это, я должен разрешить сценарию войти в систему для меня на веб-сайте Paypal. Теперь я использую фальшивую учетную запись PayPal, чтобы проверить, проверено ли электронное письмо или нет, но мой вопрос заключается в том, насколько безопасно это имя пользователя и пароль, которые вводятся на веб-сайт PayPal. Если он небезопасен и может быть легко обнюхать кто-то, кто отслеживает связь с сервером, как я могу защитить от этого?
Обратите внимание, что я не использую API Paypal, потому что для его включения на ваш сайт требуется слишком много работы, и для проверки подлинности электронной почты необходимо указать дополнительные поля (имя, фамилия и т. Д.).
Вот код:
<?php //email address to check $verifyEmail = 'randomemail@blah.com'; //paypal login info $loginEmail = '###'; $password = '###'; if (!isLogin($loginEmail, $password)) { echo 'Login failed'; } else if (isVerified($verifyEmail)) { echo 'Verified'; } else { echo 'Not verified'; } ######################################### function isVerified($verifyEmail) { $url = 'https://www.paypal.com/us/verified/pal='.$verifyEmail; $response = curl_get($url); if(strpos($response, '<td class="emphasis">Verified</td>')) { return true; } else { return false; } } function isLogin($email, $password) { // Get login page $response = curl_get('https://www.paypal.com/us/cgi-bin/webscr?cmd=_login-run'); $postFields = getHiddenFormInputs($response, 'login_form'); if (!$postFields) { return false; } // Post login $postFields['login_email'] = $email; $postFields['login_password'] = $password; $postFields = serializePostFields($postFields); $response = curl_get('https://www.paypal.com/us/cgi-bin/webscr?cmd=_login-submit', $postFields); if(!strpos($response, 'login_cmd=_login-done')) { return false; } else { return true; } } function curl_get($url, $postfields=false) { static $curl; if(empty($curl)) { $cookiejar = 'curl_cookiejar.txt'; @unlink($cookiejar); $curl = curl_init(); curl_setopt($curl, CURLOPT_COOKIEJAR, $cookiejar); curl_setopt($curl, CURLOPT_COOKIEFILE, $cookiejar); curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_HEADER, 1); curl_setopt($curl, CURLOPT_MAXREDIRS, 5); } curl_setopt($curl, CURLOPT_URL, $url); if(stripos($url, 'https')!==false) { curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); } if ($postfields) { curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $postfields); } $response = curl_exec($curl); return $response; } function getHiddenFormInputs($html) { if(!preg_match('|<form[^>]+login_form[^>]+>.*</form>|Usi', $html, $form)) { return ''; } if(!preg_match_all('/<input[^>]+hidden[^>]*>/i', $form[0], $inputs)) { return ''; } $hiddenInputs = array(); foreach($inputs[0] as $input){ if (preg_match('|name\s*=\s*[\'"]([^\'"]+)[\'"]|i', $input, $name)) { $hiddenInputs[$name[1]] = ''; if (preg_match('|value\s*=\s*[\'"]([^\'"]*)[\'"]|i', $input, $value)) { $hiddenInputs[$name[1]] = $value[1]; } } } return $hiddenInputs; } function serializePostFields($postFields) { foreach($postFields as $key => $value) { $value = urlencode($value); $postFields[$key] = "$key=$value"; } $postFields = implode($postFields, '&'); return $postFields; } ?>