![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
maxipub |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: нет Всего: 1 |
Ребята, подскажите, могут ли быть такие ситуации, когда $_SERVER['HTTP_HOST'] будет пустым или некорректным?! Просто я его использую в конструкциях типа:
И т.д... (вариант с относительными ссылками не предлагать) |
||||
|
|||||
krundetz |
|
|||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 20 Всего: 69 |
maxipub, может быть и пустым и не корректным, все зависит от контекста
Это сообщение отредактировал(а) krundetz - 26.2.2013, 14:23 |
|||
|
||||
Vardoulacha |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 184 Регистрация: 11.8.2005 Репутация: 7 Всего: 8 |
я использую такой же код, за 7 лет на разных хостингах не было еще такой ситуации чтобы там было что-то неправильное, но если нарваться на кривую настройку хостинга тогда да ))
|
|||
|
||||
maxipub |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: нет Всего: 1 |
А может быть такая ситуация, что этот момент будет зависеть от пользователя?
|
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 16 Всего: 55 |
В целом - может. Но это несколько относительный момент и скорее зависит от настройки сервера, а пользователь тут посредственен. $_SERVER['HTTP_HOST'] содержит домен/адрес/хост (называйте как удобнее), по которому к серверу был совершен запрос пользователем. То есть, если вы введете localhost/index.php, то $_SERVER['HTTP_HOST'] == 'localhost', но запрос 127.0.0.1/index.php тоже корректен и при нем $_SERVER['HTTP_HOST'] == '127.0.0.1'. То есть, вроде бы, от пользователя зависит, но, тем не менее, и что очевидно, пользователь не попадет на сервер по любому запросу, который ему заблагорассудится ввести. В переменной $_SERVER['HTTP_HOST'] может быть что-угодно из того, по чему можно выполнить запрос к серверу. А это IP, домен и алиасы (псевдонимы) домена. Обычно, в случае выделенного IP, прямой запрос на него автоматически переадресовывают на домен либо запрещают. Наверное, самый распространенный вариант при плохой настройке сервера - это возможность пользоваться сайтом как с www. в адресе, так и без него (ведь, обычно делается перманентный редирект на предпочитаемый вариант с оставшегося). По большей части $_SERVER['HTTP_HOST'] зависит от сервера. Там может быть только тот хост, по которому сервер обработал запрос. Если такой хост один-единственный, то и значение данной переменной соответствующее. -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
Читайте, вразумляйте и делайте выводы.
Добавлено через 1 минуту и 10 секунд P.S. Золотое правило веба - не верь данным которые приходят от пользователя -------------------- Amazing ![]() |
|||
|
||||
maxipub |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: нет Всего: 1 |
Это да, просто у меня были вопросы касательно как раз происхождения значения данной переменной. Ок, теперь другое дело. Как посоветуете устроить защиту, если это публичный скрипт: - т.е. возможности устроить проверку типа !in_array($_SERVER['HTTP_HOST'], $allowed_hosts) как бы нет; - просить пользователей настраивать свои сервера соответствующим образом тоже не вариант. ? |
|||
|
||||
Arantir |
|
||||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 16 Всего: 55 |
А вы скажите, что именно вы пытаетесь сделать этим:
Это на какую категорию пользователей такой скрипт рассчитан? На тех, кто даже не знает, чем *.php редактировать? Вообще - не все возможно решить одним только "правильным" написанием скрипта. В обеспечении безопасности веб-ресурса правильная настройка сервера является неотъемлемой частью. Если скрипт предназначен на один домен, то самый простой вариант - создать обычную константу. Она не будет зависеть ни от чего. А при потребности любым текстовым редактором скрипт можно изменить. И, кстати, многие форумные движки и подобные продукты, которыми мне приходилось пользоваться, в настройках просто требуют указания домена сайта, и не пользуются всякими $_SERVER['HTTP_HOST']. Это я к тому, что многие "публичные скрипты" не выдумывают велосипед, а используют простой, но железный способ. Это сообщение отредактировал(а) Arantir - 28.2.2013, 18:14 -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
||||
|
|||||
maxipub |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: нет Всего: 1 |
Arantir, в скрипте есть места, где адрес относительным быть не может.
Мне попадались движки без инсталла, где и конфига дефолтного нет, его надо самому писать по примеру, а установка базы - это ручной импорт из файла... И чё? ![]() А если предполагается что конечный пользователь не знает даже что такое адресная строка? Или такой пользователь нам не пользователь? Да хоть админ матёрый, мне самому куда приятней дружественный и корректный инсталл, чем ковыряние в файлах - это оставим на потом, успеем, при необходимости... ![]() |
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 16 Всего: 55 |
Просто отфильтруйте непотребные символы, то есть все, кроме точек, дефисов и латинских букв. Тем, кто по телнету на сайт лезет, вряд ли корректные ссылки понадобятся... Если кто-то что-то и введет, то получит только левые переадрессации.
А так, то кроме как сравнить к конкретным доменом, взятым извне, другого способа нет. Ведь если $_SERVER['HTTP_HOST'] - это единственный способ для вашего скрипта узнать домен, то как, по-вашему, он должен узнать, правильный ли этот домен? -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
maxipub |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: нет Всего: 1 |
Arantir, наверное, так и поступлю.
|
|||
|
||||
krundetz |
|
||||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 20 Всего: 69 |
либо то что мы туда положим
т.е. если скрипт будет использоваться одновременно с другими скриптами и в этих скриптах есть такого рода переопределение, то может вылезти ошибка ещё и из-за этого Лучше вообще не использовать эту переменную при работе скрипта, а брать корректный домен из файла или таблицы с настройками, который в свою очередь создавать при установке скрипта. Это сообщение отредактировал(а) krundetz - 1.3.2013, 16:51 |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |