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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> HTTP_REFFERER, в чем подводные грабли? 
V
    Опции темы
skyboy
Дата 21.4.2008, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(Feldmarschall @  21.4.2008,  15:15 Найти цитируемый пост)
skyboy, реферер в логике приложения использовать запрещено.

можно подробнее? информация консультативная, для удобства пользователя, никакой авторизации на этом поле не завязано.
пусть поле будет подделано, если проверять содержимое по каким-то параметром(принадлежность домену, и т.д..) чем это грозит? или может грозить?
P.S. Началось с темы Кнопка "Назад", оптимальный алгоритм
PM MAIL   Вверх
IZ@TOP
Дата 21.4.2008, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Не вижу ничего страшного в использовании HTTP_REFERER. Но, если логически подумать, его нужно использовать при условии что источник, откуда пришел пользователь, может быть какой угодно и нам неизвестный. Если все идет с нашего сайта, добавляем к URL формы ?return_url=/return/url/.

Добавлено через 2 минуты и 18 секунд
Кстати, если речь все же идет о проверке валидности пользователя, тогда мне становится не совсем ясно с какого боку сюда прибился HTTP_REFERER?

Ушел читать тему по ссылке...


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
skyboy
Дата 21.4.2008, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(IZ@TOP @  21.4.2008,  16:44 Найти цитируемый пост)
Кстати, если речь все же идет о проверке валидности пользователя

естественно, интересуют глобальные аспекты, но и вопрос, затронутый  в  указанной теме: по заявлению Feldmarschall'a, HTTP_REFFERER использовать нельзя. категорически. вот я и поинтересовался, с чем может быть связана такая категоричность.
PM MAIL   Вверх
IZ@TOP
Дата 21.4.2008, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



skyboy, я понял его слова несколько иначе - имеется ввиду, строить логику выполнения на основании HTTP_REFERER (мне так показалось). А вообще, сессия решает все проблемы, поэтому я не вижу необходимости в использовании проверок по REFERRER'у.

Нужно иметь ввиду что: 
1. REFERRER может быть подделан.
2. REFERRER может придти пустым.
3. REFERRER может служить в качестве обратной ссылки после выполнения некоего действия, в случае отсутствия которого нужно подставлять default location.



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Feldmarschall
Дата 21.4.2008, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

Репутация: 22
Всего: 32



Если у некоторого количества пользователей программа работать не будет, то, по моему мнению, такой программой пользоваться нельзя.
Ну вот к примеру скачал пользователь калькулятор. Нажимает 2+2, а в поле результата - пусто. У троих было нормально, а у четвертого - не считает. Я считаю, что такие программы писать нельзя. 
Сайт, который не работает - это позор и отток посетителей. Проблемы, которые случаются при работе любых сайтов, исправляются как можно раньше. Это, я надеюсь, аксиома, которую доказывать не нужно. Но проблему с отсутствующим реферером решить в принципе невозможно. То есть, использовать реферер - это намеренно делать неработающим сайт. Я считаю такой подход невозможным.

Добавлено через 1 минуту и 27 секунд
IZ@TOP, да, совершенно верно. Речь идет не о реферере вообще, а об использовании в логике приложения.
PM   Вверх
skyboy
Дата 21.4.2008, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



IZ@TOP, спасибо. я думал, я что-то по рассеянности упустил.
Feldmarschall, спасибо. хотя, хотелось бы узнать, сталкивался ли ты со случаем "неотдачи" реферрера от более-менее популярного сейчас браузера. 
а то ведь человек может и куки почистить внезапно("delete private information") и сессия внезапно окажется пустой - и тут ничего не поделать...

PM MAIL   Вверх
Feldmarschall
Дата 22.4.2008, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

Репутация: 22
Всего: 32



skyboy, да, разумеется.

PM   Вверх
skyboy
Дата 22.4.2008, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



с другой стороны, с использованием сессий есть проблема.
проблема, связанная с тем, что сессия одна. 
например, пусть у нас страница, с которой надо "вернуться назад" - это форма авторизации на... скажем, torrent-трекере.
вот пооткрывал человек кучу тем в разных закладках(сессий браузера одна). потом вдруг обнаруживает, что для скачивания нужна авторизация(получил на всех страницах форму авторизации). в сессии адресом возврата значится последняя открытая страница.
значит, после авторизации он на всех закладках попадет на последнюю открытую страницу. логично, с точки зрения работы механизма сессий, но нелогично с точки зрения пользователя.
потому, как мне думается, тут использование refferer'a вполне оправдано, а уж если в этом поле будет пусто... что ж, пользователь, возможно, получит проблемы(впрочем, можно вывести его на главную страницу).
универсально работающий метод(к примеру, передавать скрипту, формирующему авторизацию, параметром адрес, с которого был сделан переход) будет довольно-таки трудоемким, как я считаю. т.е. ссылки, передающие адрес, с которого осуществлен переход - это, конечно, универсально, но громоздко и некрасиво.
PM MAIL   Вверх
Feldmarschall
Дата 22.4.2008, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

Репутация: 22
Всего: 32



Я тут подумал, что файрволл Аутпост может быть не так туп, как мне представлялось ранее, а рубит реферер только при переходах между сайтами. Если же домен в реферере и хосте совпадает, то не рубит. Надо проверить эту мысль.
Впрочем, остаются ещё всякие акселераторы, которые в большом ходу у провайдеров.

Описанная ситуация представляется мне надуманной. Я могу представить себе пользователя трекера, который открывает раздачи в новом окне из поиска. Но представить себе его же, но жмущего "скачать" и тут же, не глядя на результат, идущего в следующее окно, жать то же самое - не могу.
Как по мне - так я форму авторизации выдаю прямо на той странице, которая была запрошена. то есть, ничего запоминать вообще не надо.
И в большинстве известных мне сайтов делается то же самое. То есть, сессия не нужна вообще, получается, для этих целей.
PM   Вверх
IZ@TOP
Дата 22.4.2008, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Цитата(skyboy @  22.4.2008,  00:24 Найти цитируемый пост)
а то ведь человек может и куки почистить внезапно("delete private information") и сессия внезапно окажется пустой - и тут ничего не поделать...

В таком случае, прерывание выполнения программы должно произойти до выполнения запрашиваемого действия. 


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
skyboy
Дата 22.4.2008, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(Feldmarschall @  22.4.2008,  10:54 Найти цитируемый пост)
Описанная ситуация представляется мне надуманной.

пожалуй, есть такое дело.
Цитата(Feldmarschall @  22.4.2008,  10:54 Найти цитируемый пост)
Но представить себе его же, но жмущего "скачать" и тут же, не глядя на результат, идущего в следующее окно, жать то же самое - не могу.

пример из собственного опыта. или я туп, или интернет у меня не так уж и быстр...
PM MAIL   Вверх
flashaa
Дата 22.4.2008, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 19
Всего: 25



По-моему суть всей дискусси сводится к тому что, реферер может быть пуст и что он может быть подделан а тут уже 10 постов интерпретации каждым этих двух фактов )
PM MAIL   Вверх
Fortop
Дата 22.4.2008, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

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



Цитата(skyboy @  22.4.2008,  11:43 Найти цитируемый пост)
вот пооткрывал человек кучу тем в разных закладках(сессий браузера одна). потом вдруг обнаруживает, что для скачивания нужна авторизация(получил на всех страницах форму авторизации). в сессии адресом возврата значится последняя открытая страница.

Реализуй в сессии массив адресов возврата

Код

UID =>  откуда,
UID1 => откуда,
UID2 => откуда

Передавай вместо урл - UID.

Куда возвращаться будеш вытаскивать из этого стека по UID.
Если ты сам себе злобный буратино и откроешь 10к авторизаций с одной и той же страницы, то после авторизации на любой из них, ты все равно вернешься на исходную.

Единственное усложнение - я бы предусмотрел сборщик мусора по массиву. Т.е. ссылки по которым произошел уже возврат - должны чиститься.

Это сообщение отредактировал(а) Fortop - 22.4.2008, 14:06


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
IZ@TOP
Дата 22.4.2008, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Чего-то вы по-моему мудрите...


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Feldmarschall
Дата 22.4.2008, 14:31 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

Репутация: 22
Всего: 32



flashaa, нет, речь не совсем об этом.
Речь о том, насколько эти два факта распространены, и следует ли их учитывать при разработке сайта.

PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0746 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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