go.php не идет по протоколу https + длина ссылки в символах

12
HL
На сайте с 12.12.2012
Offline
118
1675

Здравствуйте уважаемые форумчане. Столкнулся с проблемой, что файл редиректа go.php не хочет переходить по ссылке, начинающейся с протокола https. Открывается пустая страница и ни привета, ни ответа (((

Листинг редиректа:

<?php
$url = isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : '';
$url = str_replace('url=', '', $url);
if(preg_match('#(http?|ftp)://\S+[^\s.,>)\];\'\"!?]#i',$url)){
sleep(1);
//header("Location: $url");
echo "<div class=\"center\"><img class=\"warn\" src=\"http://www.site.ru/img/1.png\" alt=\"warn\" border=\"0\" height=\"45\" width=\"51\">Вы переходите на другой сайт.<br /> Для подтверждения перехода кликните по ссылке:<br /><a href=\"$url\">$url</a></div></body>
</html>";
exit();
}
?>

Подскажите пожалуйста, в чем может быть ошибка ? Код скрипта нашел на просторах тырнета.

В скрипте есть строчка, как я понял, она отвечает за открытие урла:

if(preg_match('#(http?|ftp)://\S+[^\s.,>)\];\'\"!?]#i',$url)){

Методом научного тыка, временно вылечил эту ошибку:

if(preg_match('#(http?|https|ftp)://\S+[^\s.,>)\];\'\"!?]#i',$url)){
Но теперь не совсем понятно, нужен ли вопросительный знак после http

А так же хотел поинтересоваться, как можно в этом скрипте ограничить длину выводимой ссылки по символам ? К примеру, если на данном форуме вставить длинный урл, то он ограничивается выводом только 54 символов.

Исходная ссылка:

https://www.google.ru/search?newwindow=1&biw=1920&bih=861&tbm=isch&sa=1&q=baxi+eco+four&oq=baxi+&gs_l=img.3.6.0l10.15309.24950.0.32332.13.10.3.0.0.0.80.594.10.10.0....0...1c.1.42.img..0.13.600.1_rpGecHDPA

Пример вывода

https://www.google.ru/search?newwindow=1&biw=1920&bih=861&tbm=isch&sa=1&q=baxi+eco+four&oq=baxi+&gs_l=img.3.6.0l10.15309.24950.0.32332.13.10.3.0.0.0.80.594.10.10.0....0...1c.1.42.img..0.13.600.1_rpGecHDPA

Спасибо.

- Дорогой выкуп баннерных показов (https://goo.gl/Haxr87). Советую! - СеоПульт (https://seopult.ru/ref/0c1642776e7e1b04) + крауд-ссылки (https://goo.gl/3eXcqn) = успех - Проверенный CashBack сервис (https://goo.gl/mAIbxw). До 30%
SocFishing
На сайте с 26.09.2013
Offline
118
#1

В конфиге httpd.conf апача попробуйте выставить

LimitRequestFieldsize 16380

и перезагрузить апач.

По умолчанию размер 8190 байт принимаемых параметров. Но это не решение.

★Сервис идентифицирует (https://socfishing.com/?utm_source=searchengines) посетителей вашего сайта и предоставляет их профили ВКонтакте, Телефон, Почта! Цены копеечные, работаем 8 лет.
[umka]
На сайте с 25.05.2008
Offline
456
#2

Должно быть так: (https?|ftp)

Лог в помощь!
LEOnidUKG
На сайте с 25.11.2006
Offline
1743
#3

Я может быть не в тему... но зачем вообще проверка на:

f(preg_match('#(http?|ftp)://\S+[^\s.,>)\];\'\"!?]#i',$url))

?!

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
[umka]
На сайте с 25.05.2008
Offline
456
#4
LEOnidUKG:
Я может быть не в тему... но зачем вообще проверка на:

f(preg_match('#(http?|ftp)://\S+[^\s.,>)\];\'\"!?]#i',$url))
?!

Ну скрипт, типа, проявляет заботу о пользователе и не редиректит его куда ни попадя :)

Хотя, конечно, эту проверку лучше делать при добавлении в базу.

LEOnidUKG
На сайте с 25.11.2006
Offline
1743
#5
'[umka:
;12801868']Ну скрипт, типа, проявляет заботу о пользователе и не редиректит его куда ни попадя :)
Хотя, конечно, эту проверку лучше делать при добавлении в базу.

Да какая тут база, если обычный скрипт берёт данные из $_SERVER['QUERY_STRING']

Какая там разница http не https ни ftp плевать.

Ладно бы там проверка была на домен куда перенаправляется, чтобы куда не попадя не делали редиректы. А тут то... на протокол проверка. Кому оно надо?

[umka]
На сайте с 25.05.2008
Offline
456
#6
LEOnidUKG:
Да какая тут база, если обычный скрипт берёт данные из $_SERVER['QUERY_STRING']

Какая там разница http не https ни ftp плевать.

Точно! Я просто читал только строку с "preg_match" :D

HL
На сайте с 12.12.2012
Offline
118
#7
'[umka:
;12801843']Должно быть так: (https?|ftp)

Спасибо большое, теперь переходит.

LEOnidUKG:
Я может быть не в тему... но зачем вообще проверка на:

f(preg_match('#(http?|ftp)://\S+[^\s.,>)\];\'\"!?]#i',$url))?!

И что теперь с этой строчкой мне делать ???😮

LEOnidUKG
На сайте с 25.11.2006
Offline
1743
#8
HotLab:
Спасибо большое, теперь переходит.

И что теперь с этой строчкой мне делать ???😮

Удалять.

<?php

$url = isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : '';

$url = str_replace('url=', '', $url);

sleep(1);

//header("Location: $url");

echo "<div class=\"center\"><img class=\"warn\" src=\"http://www.site.ru/img/1.png\" alt=\"warn\" border=\"0\" height=\"45\" width=\"51\">Вы переходите на другой сайт.<br /> Для подтверждения перехода кликните по ссылке:<br /><a href=\"$url\">$url</a></div></body>

</html>";

?>

SocFishing
На сайте с 26.09.2013
Offline
118
#9

Классный у вас редирект.

Что выдаст такой запрос go.php?url=<script>alert("xss");</script>

проще всего

$url = str_replace('url=', '', $url);

заменить на

$url = strip_tags($url); $url = str_ireplace(array('url=', 'data:', 'javascript:'), '', $url);
LEOnidUKG
На сайте с 25.11.2006
Offline
1743
#10

SocFishing, кстати да. Правы, тоже можно куки попереть. Так что почистить надо.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий