Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Общие вопросы > Всегда ли будет значение в $_SERVER['HTTP_HOST'] ? |
Автор: maxipub 26.2.2013, 14:14 | ||||
Ребята, подскажите, могут ли быть такие ситуации, когда $_SERVER['HTTP_HOST'] будет пустым или некорректным?! Просто я его использую в конструкциях типа:
И т.д... (вариант с относительными ссылками не предлагать) |
Автор: krundetz 26.2.2013, 14:22 |
maxipub, может быть и пустым и не корректным, все зависит от контекста |
Автор: Vardoulacha 27.2.2013, 04:58 |
я использую такой же код, за 7 лет на разных хостингах не было еще такой ситуации чтобы там было что-то неправильное, но если нарваться на кривую настройку хостинга тогда да )) |
Автор: maxipub 27.2.2013, 11:39 |
А может быть такая ситуация, что этот момент будет зависеть от пользователя? |
Автор: MoLeX 28.2.2013, 05:33 |
http://habrahabr.ru/post/166855/ Добавлено через 1 минуту и 10 секунд P.S. Золотое правило веба - не верь данным которые приходят от пользователя |
Автор: maxipub 28.2.2013, 17:37 | ||
Это да, просто у меня были вопросы касательно как раз происхождения значения данной переменной. Ок, теперь другое дело. Как посоветуете устроить защиту, если это публичный скрипт: - т.е. возможности устроить проверку типа !in_array($_SERVER['HTTP_HOST'], $allowed_hosts) как бы нет; - просить пользователей настраивать свои сервера соответствующим образом тоже не вариант. ? |
Автор: Arantir 28.2.2013, 18:13 | ||||||
А вы скажите, что именно вы пытаетесь сделать этим:
Вообще - не все возможно решить одним только "правильным" написанием скрипта. В обеспечении безопасности веб-ресурса правильная настройка сервера является неотъемлемой частью. Если скрипт предназначен на один домен, то самый простой вариант - создать обычную константу. Она не будет зависеть ни от чего. А при потребности любым текстовым редактором скрипт можно изменить. И, кстати, многие форумные движки и подобные продукты, которыми мне приходилось пользоваться, в настройках просто требуют указания домена сайта, и не пользуются всякими $_SERVER['HTTP_HOST']. Это я к тому, что многие "публичные скрипты" не выдумывают велосипед, а используют простой, но железный способ. |
Автор: maxipub 28.2.2013, 18:32 | ||
Arantir, в скрипте есть места, где адрес относительным быть не может.
Мне попадались движки без инсталла, где и конфига дефолтного нет, его надо самому писать по примеру, а установка базы - это ручной импорт из файла... И чё? ![]() А если предполагается что конечный пользователь не знает даже что такое адресная строка? Или такой пользователь нам не пользователь? Да хоть админ матёрый, мне самому куда приятней дружественный и корректный инсталл, чем ковыряние в файлах - это оставим на потом, успеем, при необходимости... ![]() |
Автор: Arantir 28.2.2013, 18:55 |
Просто отфильтруйте непотребные символы, то есть все, кроме точек, дефисов и латинских букв. Тем, кто по телнету на сайт лезет, вряд ли корректные ссылки понадобятся... Если кто-то что-то и введет, то получит только левые переадрессации. А так, то кроме как сравнить к конкретным доменом, взятым извне, другого способа нет. Ведь если $_SERVER['HTTP_HOST'] - это единственный способ для вашего скрипта узнать домен, то как, по-вашему, он должен узнать, правильный ли этот домен? |
Автор: maxipub 28.2.2013, 19:10 |
Arantir, наверное, так и поступлю. |
Автор: krundetz 1.3.2013, 16:47 | ||||
либо то что мы туда положим
т.е. если скрипт будет использоваться одновременно с другими скриптами и в этих скриптах есть такого рода переопределение, то может вылезти ошибка ещё и из-за этого Лучше вообще не использовать эту переменную при работе скрипта, а брать корректный домен из файла или таблицы с настройками, который в свою очередь создавать при установке скрипта. |