Вопрос по файлу go.php в DLE

Статус
В этой теме нельзя размещать новые ответы.

Dozor2

Постоялец
Регистрация
18 Дек 2007
Сообщения
329
Реакции
157
Имеем файл:
PHP:
function reset_url($url) {
	$value = str_replace ( "http://", "", $url );
	$value = str_replace ( "www.", "", $value );
	$value = explode ( "/", $value );
	$value = reset ( $value );
	return $value;
}
$url = rawurldecode ( $_GET['url'] );
$url = @base64_decode ( $url );
$url = str_replace ( "&", "&", $url );

$_SERVER['HTTP_REFERER'] = reset_url ( $_SERVER['HTTP_REFERER'] );
$_SERVER['HTTP_HOST'] = reset_url ( $_SERVER['HTTP_HOST'] );

if (($_SERVER['HTTP_HOST'] != $_SERVER['HTTP_REFERER']) or $url == "") {
	@header ( 'Location: /index.php' );
	die ( "Access denied!!!<br /><br />Please visit <a href=\"/index.php\">{$_SERVER['HTTP_HOST']}</a>" );
}

@header ( 'Location: ' . $url );

die ( "Link Redirect:<br /><br />Please click <a href=\"{$url}\">here.</a>" );
Какие могут быть проблемы если удалить проверку реферера? То есть эту часть:
PHP:
(($_SERVER['HTTP_HOST'] != $_SERVER['HTTP_REFERER'])
 
Собственно происходит проверка с вашего ли сайта сделан переход на go.php если его убрать и будет присутствовать какой-то параметр url скрипт попытается сделать переход на него, запросов к базе он никаких не делает при этом, чистое декодирование параметра. Вообщем если кто-то будет использовать ваши leech ссылки(спарсят например контент) без этой проверки при переходе с другого сайта переход будет осуществлен по параметру url при использовании этой проверки происходит редирект на site.ru/index.php
 
ну и еще xss - появится возможность нагенерить кучу линков которые будут вести с вашего сайта
 
zzallexx, спасибо, но это все я понимаю, меня интересуют конкретные проблемы, которые могут возникнуть.

Дело в том, что если например в гугл хроме юзер перейдет по leech ссылке через "Открыть ссылку в новой вкладке", то реферер не передается и соответственно юзера редиректит на главную. Поэтому я и задался вопросом целесообразности проверки реферера.

ZCFD, спасибо, можно поподробней?
 
пример
Код:
http://site/go.php?url=zcfd.ru

c проверкой реферера - редиректить будет только если ссылка была на твоем сайте, в остальных случаях будет отправлять на главную твоего сайта

убираем проверку - редиректить будет все время. Т.е. я генерирую ссылки вида
Код:
http://site/go.php?url=zcfd.ru/p=1
http://site/go.php?url=zcfd.ru/p=2
http://site/go.php?url=zcfd.ru/=3
и получаю три страницы твоего сайта которые ссылаются на меня

почитай про убитую тему с xss - это именно оно

вариант - редиректить через js, ну или прятать в noindex

это что касается SEO

ну и повышаешь риск что например используют эту штуку что бы увести кукисы пользователей, это про безопасность
 
У меня весь каталог /engine/ (в котором go.php) закрыт от индексации в robots.txt так что в плане seo проблем быть не должно.

Про кукисы можешь привести пример?
 
ну и повышаешь риск что например используют эту штуку что бы увести кукисы пользователей, это про безопасность
а если взять через курл подставить реферер сайта то тоже получаеться будет работать xss ?там же идёт защита от этого функция reset_url() берёт url тока!
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху