REMOTE_ADDR и HTTP_X_FORWARDED_FOR

yeaahhh

Старатель
Регистрация
8 Май 2008
Сообщения
278
Реакции
11
Ребят, сегодня на сайте произошло ЧП. От нескольких пользователей произошла небольшая рассылка "плохих" сообщений. Смотрю в БД - все показатели пользователей (ip и т.п.) являются реальными ip этих пользователей. Т.е. как будто реально они сделали рассылку. Но они всячески отрицают это.
Вопрос: можно ли как-то подделать ip?
IP определяется через:
PHP:
$ip=getenv("HTTP_X_FORWARDED_FOR");
if (empty($ip) || $ip=='unknown') { $ip=getenv("REMOTE_ADDR"); }
Или же может быть такое, что несколько пользователей сидят на одном и том же ip?
И что значат вот такие записи после доабвления $ip в БД:
178.123.61.101, 80.239.242.207.
Прям руки опускаются от неизвестности..(
 
Загаловки типа HTTP_блабла изменяются элементарно в любом хттп дебагере, ну или в файрфоксе через этот плугин


Так что я советую погрепать все скрипты на вхождения типа HTTP_
и посмотреть куда дальше попадают эти данные, потому что если в базу то там и до иньекции не далеко....
 
Извиняюсь, не могли бы вы поподробнее о "погрепать все скрипты на вхождения типа HTTP_".. Немного не понял..
 
*** скрытое содержание ***
причем тут эта хрень? Лишь бы посты понабирать?

Извиняюсь, не могли бы вы поподробнее о "погрепать все скрипты на вхождения типа HTTP_".. Немного не понял..
он имеет ввиду что не нужно опускатся до такого идиотизма, и проверять IP таким образом, если у вас мания того что кто то ходит через прокси, и ломает ваш сайтик, создайте дополнительное поле в базе, в которое записывайте значение HTTP_X_FORWARDED_FOR и т.п. подобных заголовков, которые можно легко подделать.

Есть аксиома - все данные присланые от пользователя нельзя считать достоверными, кроме тех, которые невозможно подделать в силу технических причин. А вы так просто берете и доверяете присланным данным, а потом удивляетесь, почему они не достоверны?
 
Вопрос: можно ли как-то подделать ip?
IP определяется через:
PHP:
$ip=getenv("HTTP_X_FORWARDED_FOR");
if (empty($ip) || $ip=='unknown') { $ip=getenv("REMOTE_ADDR"); }
Или же может быть такое, что несколько пользователей сидят на одном и том же ip?
И что значат вот такие записи после доабвления $ip в БД:
178.123.61.101, 80.239.242.207.
Прям руки опускаются от неизвестности..(
ip подделать, в общем случае, нельзя. А вот в заголовок запроса HTTP_X_FORWARDED_FOR можно вставить вообще все, что угодно.
если ip у вас определяется лишь в одном приведенном вами месте, то измените его на:
PHP:
$ip=getenv("REMOTE_ADDR");
$ipFF=getenv("HTTP_X_FORWARDED_FOR");
if (!empty($ipFF) && $ipFF!='unknown') 
{ 
  //  если вам вообще нужно сохранять этот HTTP_X_FORWARDED_FOR
  $ip.= ' , HTTP_X_FORWARDED_FOR=[ '.$ipFF.' ]';
}
кстати, вполне возможно на вашем сайте нашли активную xss, послали фейковые письма/ссылки вашим юзерам и теперь, когда они открывают эти письма/ссылки, от их имени может идти спам.
 
Извиняюсь, не могли бы вы поподробнее о "погрепать все скрипты на вхождения типа HTTP_".. Немного не понял..



А проверить IP имхо лучше так $_SERVER['REMOTE_ADDR']
это вроде через модифай хедерс в файрфоксе не подделать

Да еще можно логировать не только IP но и юзер агенты, ну и если
есть подозрение по поводу пользователей, сравните юзер агенты...
 
Назад
Сверху