
Pro AV
+35
Репутация
176
Рейтинг
vikont ко мне на сайт посылают запросы 22089 адресов с редиректами, я когда первый раз увидел очень удивился такой популярности. Сайт просто лёг, никаких операций вообще выполнять не мог, не то что перегрузка была — вообще завис намертво. Вставил код тот что выше, и ничего теперь работает, никакой перегрузки.
Давайте скомбинируем мой код и @IamB.
Вставьте так:
// боремся с редиректами
// в корне сайта, в самом начале файла index.php вставляем:
if(strpos($_SERVER['REQUEST_URI'], '/redirect?url=http') !== false)
{
$is_access = 0; // нет доступа
if(!empty($_SERVER['HTTP_REFERER'])){
if(strpos($_SERVER['HTTP_REFERER'], 'http://'.$_SERVER['HTTP_HOST']) === 0)
{$is_access = 1;} // есть доступ
if(strpos($_SERVER['HTTP_REFERER'], 'https://'.$_SERVER['HTTP_HOST']) === 0)
{$is_access = 1;} // есть доступ
}
if($is_access != 1){
$msg = " 403 Forbidden";
header($_SERVER["SERVER_PROTOCOL"].$msg);
exit("<h1>{$msg}</h1>");
}
}
//-----------------------------------
Будет то что надо, больше ничего не трогайте. Запросы на сервер поступать продолжат (вы же можете кому либо запретить пользоваться интернетом), но вредить не будут.
Вставьте так:
// боремся с редиректами
// в корне сайта, в самом начале файла index.php вставляем:
if(strpos($_SERVER['REQUEST_URI'], '/redirect?url=http') !== false)
{
$is_access = 0; // нет доступа
if(!empty($_SERVER['HTTP_REFERER'])){
if(strpos($_SERVER['HTTP_REFERER'], 'http://'.$_SERVER['HTTP_HOST']) === 0)
{$is_access = 1;} // есть доступ
if(strpos($_SERVER['HTTP_REFERER'], 'https://'.$_SERVER['HTTP_HOST']) === 0)
{$is_access = 1;} // есть доступ
}
if($is_access != 1){
$msg = " 403 Forbidden";
header($_SERVER["SERVER_PROTOCOL"].$msg);
exit("<h1>{$msg}</h1>");
}
}
//-----------------------------------
Будет то что надо, больше ничего не трогайте. Запросы на сервер поступать продолжат (вы же можете кому либо запретить пользоваться интернетом), но вредить не будут.
Хорошо, просто уточню. Если этот страшный GET запрос поступит но не будет исполняться (обрабатываться), это решит проблему? или проблема остаётся?
Что-то я совсем запутался, я пытался решить задачу по невыполнению перехода по редиректу, или попытки взлома. А оказывается надо просто запретить кому-то обращаться к вашему сайту.
Да, но тогда при чем тут instantCMS? Тогда проблема не в оформлении ссылки через редирект, а в том, что к сайту слишком много обращений.
Я конечно извиняюсь, но если GET запрос поступает на сервер и никак не обрабатывается, зачем на такой запрос обращать внимания.
Не верно, отключите вы компонент, удалите ли вы его, GET запросы к серверу будут продолжать идти, рубить их надо на уровне сервера
Как такое может быть? Скорее всего у вас на сервере работает сохранённая в cache версия сайта. Если на сайте физически нет компонента "redirect" который выполняет переход по ссылке, и вообще никаких скриптов нет, то и исполнять конструкцию "/redirect?url=http" просто нечему, ничего не произойдёт. Значит где-то лежит копия сайта, которая и живёт своей отдельной жизнью )). Вам её найти надо и что-то с ней сделать.
Не поможет, я полностью скрипт сайта удалял, оставлял пустую доменную папку, а редиректы шли! Единственная разница, что при этом в редиректах отсутствовали ссылки на статьи.
Или я вас неправильно понял? и вы говорите о том, что на ваш сервер при удалённых скриптах всё равно поступают запросы типа "/redirect?url=http://кокойто_гс"?
Про "ссылочную массу" так всё и есть, весь этот мусор индексируется, очень печально.
Наверно могут, поэтому скорее всего у vikont мой код не сработал, но в моём случае большинство редиректов идёт не напрямую "источник->мой_сайт->целевой_сайт" а через цепочку, примерно так "источник->ещё_сайт->мой_сайт->целевой_сайт", и у меня HTTP_REFERER моего сервера отслеживается.
То есть HTTP_REFERER они пока генерировать не научились?
vikont попробуйте отсечь вообще все редиректы:
if(strpos($_SERVER['REQUEST_URI'], '/redirect?url=http') !== false) { return;}
Так думаю точно хулиганы не пролезут, но есть минус — компонент "redirect" у вас на сайте вообще работать не будет.
Вчера вечером снова напали на меня эти редиречики, да так что сайт лёг намертво, ничего не помогало, пришлось в файл index.php до включения всех функций сайта вставить вот такой код, вдруг кому-то пригодится.
// боремся с редиректами
// в корне сайта, в самом начале файла index.php вставляем:
if(strpos($_SERVER['REQUEST_URI'], '/redirect?url=http') !== false)
{
$is_access = 0; // нет доступа
if(!empty($_SERVER['HTTP_REFERER'])){
if(strpos($_SERVER['HTTP_REFERER'], 'http://'.$_SERVER['HTTP_HOST']) === 0)
{$is_access = 1;} // есть доступ
if(strpos($_SERVER['HTTP_REFERER'], 'https://'.$_SERVER['HTTP_HOST']) === 0)
{$is_access = 1;} // есть доступ
}
if($is_access != 1){
echo 'Переход недоступен '.$_SERVER['REQUEST_URI'];
return; // дальше не выполняем
}
}
//-----------------------------------
/**
* Константа, по которой можно отследить текущий тип запуска CMS
*/
// дальше код cms…
// боремся с редиректами
// в корне сайта, в самом начале файла index.php вставляем:
if(strpos($_SERVER['REQUEST_URI'], '/redirect?url=http') !== false)
{
$is_access = 0; // нет доступа
if(!empty($_SERVER['HTTP_REFERER'])){
if(strpos($_SERVER['HTTP_REFERER'], 'http://'.$_SERVER['HTTP_HOST']) === 0)
{$is_access = 1;} // есть доступ
if(strpos($_SERVER['HTTP_REFERER'], 'https://'.$_SERVER['HTTP_HOST']) === 0)
{$is_access = 1;} // есть доступ
}
if($is_access != 1){
echo 'Переход недоступен '.$_SERVER['REQUEST_URI'];
return; // дальше не выполняем
}
}
//-----------------------------------
/**
* Константа, по которой можно отследить текущий тип запуска CMS
*/
// дальше код cms…
Ваше решение к сожалению не помогло.Лично для себя нашёл ещё такое решение,
[/quote]
Попробуйте незарегистрированным пользователям, просто показывать страницу 404. так по идее не должно ресурсы кушать
if (!$this->cms_user->is_logged) { cmsCore::error404(); }
Я Fuze писал насчёт этой проблемы с редиректом, нагрузка на сайт была 100%, он мне ответил, чтобы я выключил компонент "редирект" в админке.
Я компонент совсем выключать не стал поставил галку "Проверять HTTP referer", нагрузка на сайт упала до 60%.
Лично для себя нашёл ещё такое решение, прописал в файле "./system/controllers/redirect/frontend.php", что редиректом могут пользоваться только зарегистрованные пользователи, после этого нагрузка пропала.
Я компонент совсем выключать не стал поставил галку "Проверять HTTP referer", нагрузка на сайт упала до 60%.
Лично для себя нашёл ещё такое решение, прописал в файле "./system/controllers/redirect/frontend.php", что редиректом могут пользоваться только зарегистрованные пользователи, после этого нагрузка пропала.
if (!$this->cms_user->is_logged) { cmsUser::addSessionMessage('<p style="font-size:26px;">Для перехода по ссылке требуется <a href="/auth/login">регистрация</a></p>', 'error'); $url = ''; $is_domain_banned = true; $is_domain_in_black_list = true; //cmsUser::goLogin(); }
Число объявлений сейчас на самом деле не надо, а фильтр лучше сразу раскрыть.
4455.kz/ — кнопка "Наверх", скачущая по середине экрана раздражает.
На странице с объявлением, заголовок "Фотография:" я бы убрал.
4455.kz/ — кнопка "Наверх", скачущая по середине экрана раздражает.
На странице с объявлением, заголовок "Фотография:" я бы убрал.
Про W1 отзывы читал — они были просто ужасные. Подключил Walletone (W1) три месяца работаю вообще без проблем, она и на(в) Украине работает и в России. У меня большинство российских пользователей через неё платят, Приват банк там тоже есть.