Остановите данные сообщения из другого доменного PHP

Стоит отметить, что код, который вы видите, отправляется в базу данных как есть, запросы отправляются отдельно для предотвращения внедрения SQL. AFAIK? метки являются заполнителями, которые заменяются числовыми параметрами в базе данных, а не в спящем режиме.

8
задан Juan 1 July 2009 в 16:38
поделиться

4 ответа

$ _ SERVER ['HTTP_Referrer'] было бы неплохо, но это ненадежно. Вы можете использовать скрытое поле формы, в котором есть что-то MD5, а затем проверить его на другой стороне.

6
ответ дан 5 December 2019 в 06:38
поделиться

Вы пытаетесь предотвратить CSRF - подделку межсайтовых запросов . У самого Джеффа есть статья в блоге об этом.

True XSRF Prevention требует трех частей:

  • Скрытые поля ввода, чтобы кто-то не мог просто захватить форму и встроить ее
  • Контроль времени в эпсилоне. генерируемой формы, в противном случае кто-то может один раз сгенерировать действительную форму и использовать токен (в зависимости от реализации / способа хранения).
  • Куки-файлы: это сделано для того, чтобы злонамеренный сервер не выдавал себя за клиента и не выполнял действия атака посередине
9
ответ дан 5 December 2019 в 06:38
поделиться

В форме:

<?
$password = "mypass"; //change to something only you know
$hash = md5($password . $_SERVER['REMOTE_ADDR']);
echo "<input type=\"hidden\" name=\"iphash\" value=\"$hash\"/>";
?>

Когда вы проверяете:

$password = "mypass"; //same as above
if ($_POST['iphash'] == md5($password . $_SERVER['REMOTE_ADDR'])) {
    //fine
}
else {
    //error
}
2
ответ дан 5 December 2019 в 06:38
поделиться

Если вы ищете быстрый и грязный подход, вы можете проверить Заголовок REFERER.

Если вы действительно хотите убедиться, что форма была получена с вашего сайта, вы должны генерировать токен каждый раз при загрузке формы и присоединять его к сеансу. Простой способ сделать это будет примерно так:

$_SESSION['formToken'] = sha1(microtime());

Тогда ваша форма может иметь скрытый ввод:

<input type="hidden" name="token" value='<?=$_SESSION['formToken'];?>' />

, и вы можете проверить это при принятии решения, обрабатывать ли данные вашей формы.

0
ответ дан 5 December 2019 в 06:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: