У меня есть сайт, который использует paypal для сбора платежей за электронные данные. Переменные не могут быть переданы с URL-адресом через paypal (или я не могу заставить их работать), поэтому я использовал файлы cookie для передачи номера элемента. Тем не менее, хитрый пользователь мог после отправки части cookie ввести URL-адрес перенаправления PayPal непосредственно в адресную строку и получить электронные данные бесплатно. Обход PayPal. Как я могу обойти это?
Вот некоторые из кода. Вы увидите, что я попытался сделать это трудным для пользователя, пройдя прямо через письмо cookie (pre_contact.php) и URL-адрес перенаправления PayPal (step.php).
//pre_contact.php
<?PHP
global $id;
setcookie("property", $id, time()+1800);
echo "<META HTTP-EQUIV=Refresh CONTENT=\"0; URL=contact.php\">";
?>
//contact.php - paypal pay button
echo "<form action='https://www.paypal.com/cgi-bin/webscr' method='post'>";
echo "<input type='hidden' name='cmd' value='_s-xclick'>";
echo "<input type='hidden' name='hosted_button_id' value='156320'>";
echo "<input type='image'
src='https://www.paypal.com/en_GB/i/btn/btn_paynowCC_LG.gif' border='0' name='submit'
alt='Click to pay'>";
echo "<img alt='' border='0' src='https://www.paypal.com/en_GB/i/scr/pixel.gif' width='1' height='1'>";
echo "</form>";
//step.php - paypal redirect on successful payment
<?PHP
require("generate_url.php");
?>
//generate_url.php - This generates a unique URL so the info can only be accessed once
<?PHP
if (eregi("generate_url.php", $_SERVER['SCRIPT_NAME'])) {
Header("Location: index.php"); die();
}
$token = md5(uniqid(rand(),1));
setcookie("token", $token, time()+4);
$cwd = substr($_SERVER['PHP_SELF'],0,strrpos($_SERVER['PHP_SELF'],"/"));
Header("Location: $cwd/get_file.php?q=$token"); die();
?>
//get_file.php - displays the file after payment
$qtoken = $_GET['q'];
if ($qtoken===$_COOKIE["token"]){
$id=$_COOKIE["property"];
DISPLAY FILE HERE!!
Заранее спасибо