Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Всегда ли будет значение в $_SERVER['HTTP_HOST'] ? 
V
    Опции темы
maxipub
Дата 26.2.2013, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 517
Регистрация: 22.10.2009

Репутация: нет
Всего: 1



Код

'HTTP_HOST' - Содержимое шапки Host: из текущего запроса, если имеется.


Ребята, подскажите, могут ли быть такие ситуации, когда $_SERVER['HTTP_HOST'] будет пустым или некорректным?! Просто я его использую в конструкциях типа:

Код

header('Location: https://'.$_SERVER['HTTP_HOST'].'/bla-bla-bla');


И т.д...

(вариант с относительными ссылками не предлагать)
PM MAIL   Вверх
krundetz
Дата 26.2.2013, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



maxipub, может быть и пустым и не корректным, все зависит от контекста

Это сообщение отредактировал(а) krundetz - 26.2.2013, 14:23


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
Vardoulacha
Дата 27.2.2013, 04:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 184
Регистрация: 11.8.2005

Репутация: 7
Всего: 8



я использую такой же код, за 7 лет на разных хостингах не было еще такой ситуации чтобы там было что-то неправильное, но если нарваться на кривую настройку хостинга тогда да ))
PM MAIL   Вверх
maxipub
Дата 27.2.2013, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 517
Регистрация: 22.10.2009

Репутация: нет
Всего: 1



А может быть такая ситуация, что этот момент будет зависеть от пользователя?
PM MAIL   Вверх
Arantir
Дата 27.2.2013, 16:31 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 16
Всего: 55



Цитата(maxipub @  27.2.2013,  10:39 Найти цитируемый пост)
А может быть такая ситуация, что этот момент будет зависеть от пользователя? 

В целом - может. Но это несколько относительный момент и скорее зависит от настройки сервера, а пользователь тут посредственен.
$_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
}
PM   Вверх
MoLeX
  Дата 28.2.2013, 05:33 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Читайте, вразумляйте и делайте выводы.

Добавлено через 1 минуту и 10 секунд
P.S. Золотое правило веба - не верь данным которые приходят от пользователя


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
maxipub
Дата 28.2.2013, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 517
Регистрация: 22.10.2009

Репутация: нет
Всего: 1



Цитата(MoLeX @  28.2.2013,  05:33 Найти цитируемый пост)
Золотое правило веба - не верь данным которые приходят от пользователя 

Это да, просто у меня были вопросы касательно как раз происхождения значения данной переменной.

Ок, теперь другое дело. Как посоветуете устроить защиту, если это публичный скрипт:

- т.е. возможности устроить проверку типа !in_array($_SERVER['HTTP_HOST'], $allowed_hosts) как бы нет;
- просить пользователей настраивать свои сервера соответствующим образом тоже не вариант.

?
PM MAIL   Вверх
Arantir
Дата 28.2.2013, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 16
Всего: 55



А вы скажите, что именно вы пытаетесь сделать этим: 
Цитата(maxipub @  26.2.2013,  13:14 Найти цитируемый пост)
Код
header('Location: https://'.$_SERVER['HTTP_HOST'].'/bla-bla-bla');
 с учетом необоснованного 
Цитата(maxipub @  26.2.2013,  13:14 Найти цитируемый пост)
вариант с относительными ссылками не предлагать


Цитата(maxipub @  28.2.2013,  16:37 Найти цитируемый пост)
Ок, теперь другое дело. Как посоветуете устроить защиту, если это публичный скрипт:

- т.е. возможности устроить проверку типа !in_array($_SERVER['HTTP_HOST'], $allowed_hosts) как бы нет;
Это на какую категорию пользователей такой скрипт рассчитан? На тех, кто даже не знает, чем *.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
}
PM   Вверх
maxipub
Дата 28.2.2013, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 517
Регистрация: 22.10.2009

Репутация: нет
Всего: 1



Arantir, в скрипте есть места, где адрес относительным быть не может.


Цитата(Arantir @  28.2.2013,  18:13 Найти цитируемый пост)
И, кстати, многие форумные движки и подобные продукты, которыми мне приходилось пользоваться, в настройках просто требуют указания домена сайта, и не пользуются всякими $_SERVER['HTTP_HOST']. Это я к тому, что многие "публичные скрипты" не выдумывают велосипед, а используют простой, но железный способ.

Мне попадались движки без инсталла, где и конфига дефолтного нет, его надо самому писать по примеру, а установка базы - это ручной импорт из файла... И чё? smile

А если предполагается что конечный пользователь не знает даже что такое адресная строка? Или такой пользователь нам не пользователь? Да хоть админ матёрый, мне самому куда приятней дружественный и корректный инсталл, чем ковыряние в файлах - это оставим на потом, успеем, при необходимости... smile 
PM MAIL   Вверх
Arantir
Дата 28.2.2013, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 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
}
PM   Вверх
maxipub
Дата 28.2.2013, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 517
Регистрация: 22.10.2009

Репутация: нет
Всего: 1



Arantir, наверное, так и поступлю.
PM MAIL   Вверх
krundetz
Дата 1.3.2013, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Цитата(Arantir @  27.2.2013,  16:31 Найти цитируемый пост)
$_SERVER['HTTP_HOST'] содержит домен/адрес/хост (называйте как удобнее), по которому к серверу был совершен запрос пользователем.

либо то что мы туда положим
Код

$_SERVER['HTTP_HOST'] = 'incorrect-domain.com ';

т.е. если скрипт будет использоваться одновременно с другими скриптами и в этих скриптах есть такого рода переопределение, то может вылезти ошибка ещё и из-за этого

Лучше вообще не использовать эту переменную при работе скрипта, а брать корректный домен из файла или таблицы с настройками, который в свою очередь создавать при установке скрипта.

Это сообщение отредактировал(а) krundetz - 1.3.2013, 16:51


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1039 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.