Большой Воронежский Форум
» Программирование>Интересная ситуация, php и апач
A-Maverick 00:37 23.11.2009
Собственно, имеется сайт, на нём есть собственный лог ссылок, по которым пользователь заходит.
И вот, однажды, увидел я в нём такие строки:

httр://mysite/ttp://people.icq.com/people/
httр://mysite/ttp://www.yahoo.com/

("http://mysite/" - URL моего сайта)


В принципе, ничего необычного в них нет, видимо, кто-то забавляется... Однако! Если попытаться самому зайти на сайт по этим адресам, то сайт перекидывает тебя на документ, обрабатывающий ошибку 404 (т.е. такой страницы не существует). Этот документ - статичный, т.е. в нём нет вообще никаких скриптов и сделать запись в БД на предмет захода он просто не может.

Собственно, возникает два вопроса:
1. Как же кто-то умудрился отпечатать в $_SERVER['REQUEST_URI'] такой URL?
2. Зачем вообще пытаются зайти по подобно сформированным URL'ам? Типа, попытка взлома?

p.s. Запись в лог производится по следующему алгоритму. Берётся девственная $_SERVER['REQUEST_URI'], отсекается первый символ (в нормальном url это '/') и присобачивается слева адреса моего сайта. Иными словами, в $_SERVER['REQUEST_URI'] каким-то образом поместили 'http://people.icq.com/people/' и 'http://www.yahoo.com/' соответсвенно. [Ответ]
Rаvel 10:38 23.11.2009
был твой сайт в адресной строке, потом туда кто-то неудачно яху перетащил или напечатал,
не обращай внимания на такую фигню [Ответ]
A-Maverick 16:36 23.11.2009
Даже если теоретически предположить, что заходили по адресу:
httр://mysite/http://people.icq.com/people/
и при этом запустился скрипт записи в БД, переменная $_SERVER['REQUEST_URI'] должна была выглядеть так:
/http://people.icq.com/people/

Она же выглядит так:
httр://people.icq.com/people/

И это я проверил по записям в БД - а в БД значение $_SERVER['REQUEST_URI'] пишется в изначальном состоянии, без отсекания символов. [Ответ]
Rаvel 18:48 23.11.2009
Используется ЧПУ? Покажи кусок кода, где вставка в БД и формирование лога (вместе с обрезанием первого символа) [Ответ]
A-Maverick 12:35 25.11.2009

Сообщение от Rаvel:
Используется ЧПУ? Покажи кусок кода, где вставка в БД и формирование лога (вместе с обрезанием первого символа)

Да, чпу используется.

В коде нет ничего сверхестесственного:
[PHP]
//$info - массив данных, там и IP юзера, и урл, по которому он зашёл и пр,
if(isset($_SERVER['REQUEST_URI']))
$info['url'] = $_SERVER['REQUEST_URI'];
[/PHP]

Дальше идёт простой Insert-into-values массива $info.

Слешь обрезается при выводе статистики:
[PHP]
/*Делается запрос в БД с группированием по колонке URL, всё это записывается в массив ассоциативных массивов $urls*/
foreach($urls as $url)
echo WWWROOT.substr($url['url'], 1).'<br/>';
/*WWWROOT хранит в себе адрес корня сайта с обратным слешем, т.е. "http://mysite.ru/"*/
[/PHP] [Ответ]
Вверх