2014-01-30 3 views
1

Поскольку можно заархивировать PHP-почту с перекрестными доменами, я считаю, что это означает, что кто-то, кто получил доступ к моему исходному коду, мог создать свой собственный домен и опубликовать любые значения. Есть ли способ отключить проводку перекрестных доменов или мне нужно проверить все значения в сообщении, чтобы убедиться, что они действительны?Уязвимость в PHP post?

+0

Вы всегда должны проверять пользовательские входы, это не имеет ничего общего с кросс-доменом. Запросы POST даже не должны поступать с веб-страницы, их можно сделать с помощью 'curl'. – Barmar

+1

Пользователи - самые злые, безумные вещи в Интернете. Укрепите свой код настолько, насколько сможете. – Mave

+0

Это должно быть указано как «** Never ** trust user input» ;-) –

ответ

2

Это не имеет никакого отношения к другому домену; Любой клиент в любом месте может отправлять любые значения, которые ваш сервер будет принимать. Вот почему одно из основных правил в Интернете никогда не является доверенным пользовательским данным: всегда проверяйте его на стороне сервера. \

Вот некоторые достойные чтения по теме:

What's the best method for sanitizing user input with PHP?

What are the best PHP input sanitizing functions?

1

Лучше создать случайный хэш, как: md5(time().rand(1000,9999)) и,

  1. Положите его в скрытом входное значение похоже: <input name='token' type='hidden' value='<?php echo $hash ?>' />
  2. И комплект $_SESSION['token'] = $hash;

И каждый раз, когда вы обрабатываете форму, проверить это нравится:

if($_SESSION['token'] !== $_POST['token']) die('invalid request'); 

Таким образом, только те пользователи, которые представили форму из вашего домена будет успешным, подающие.

+0

Хотя это может затруднить выполнение массовых спамовых подачек, это не мешает мне принимать данные на моем удаленном сервере (или генерировать его), а затем cURL запрашивает вашу форму, принимает куки и подает вам ваш токен обратно вы с моими данными. –

Смежные вопросы