Модераторы: 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   Вверх
Fortop
Дата 22.4.2008, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(IZ@TOP @  22.4.2008,  14:23 Найти цитируемый пост)
Чего-то вы по-моему мудрите... 

Что именно непонятно?

Был вопрос - как реализовать возврат для одновременно открытых страниц в рамках одной сессии.
Ответ - Хранишь не просто url для возврата, а массив таких url, для каждой открытой страницы - своя запись.


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


Новичок
****


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

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



Fortop, вот только это придется в сессию писать каждую страницу, которую открывал юзер. 
и плюс - передавать по ссылке уид из сессии. поменяли шило на мыло =)
PM   Вверх
skyboy
Дата 22.4.2008, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Feldmarschall @  22.4.2008,  10:54 Найти цитируемый пост)
Я тут подумал, что файрволл Аутпост может быть не так туп, как мне представлялось ранее, а рубит реферер только при переходах между сайтами.

чесно говоря, я вообще о таком только от тебя здесь услышал :( не думал, что файрволл занимается изменением данных. доступом -- да, но данные...  smile 
собственно, ради выяснения вот таких вот моментов и начал тему.
Цитата(Feldmarschall @  22.4.2008,  13:46 Найти цитируемый пост)
поменяли шило на мыло =)

вот-вот. единственно - идентификатор сессии обычно в coockie лежит и, по крайней мере, юзеру глаза не мозолит. 
Цитата(Feldmarschall @  22.4.2008,  13:31 Найти цитируемый пост)
Речь о том, насколько эти два факта распространены, и следует ли их учитывать при разработке сайта.

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


Эксперт
****


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

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



Цитата(Feldmarschall @  22.4.2008,  14:46 Найти цитируемый пост)
Fortop, вот только это придется в сессию писать каждую страницу, которую открывал юзер. 

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

Цитата(Feldmarschall @  22.4.2008,  14:46 Найти цитируемый пост)
и плюс - передавать по ссылке уид из сессии. поменяли шило на мыло =) 

Не проникся.

UID будет много короче реального пути возврата в виде URL, особенно если погуляешь до страницы не сразу, а через несколько других.

Цитата(skyboy @  22.4.2008,  15:03 Найти цитируемый пост)
вот-вот. единственно - идентификатор сессии обычно в coockie лежит и, по крайней мере, юзеру глаза не мозолит. 

UID предлагался для замены списка URL, но никак не сессии.

Вместо

Цитата
http://some.com/page4.php?returnto=http://some.com/page3.php?returnto=http://some.com/page2.php?returnto=http://some.com/page1.php?returnto=http://some.com/index.php


Использовать вот такое

Цитата
http://some.com/page4.php?returnto=ABC7ASED456464


И ничего более smile


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


Добрый кот
***


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

Репутация: 10
Всего: 38



Блин, сменили тему, я в прошлой отписал ту же мысль со стеком в сессии :(

По-моему самый правильный вариант: не карячит URL, не зависит от каких-либо настроек на стороне пользователя.

// p.s. сполз под стол уидев описание темы. Такого девайса я себе не мог представить!

Это сообщение отредактировал(а) SamDark - 22.4.2008, 19:08


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
IZ@TOP
Дата 24.4.2008, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(SamDark @  22.4.2008,  20:03 Найти цитируемый пост)
Блин, сменили тему, я в прошлой отписал ту же мысль со стеком в сессии :(

По-моему самый правильный вариант: не карячит URL, не зависит от каких-либо настроек на стороне пользователя.


Блин, ребята? Чего вы тут городите? Используйте ?return_url=/return/url/ и не пилите мозг себе и другим людям. В обоснование своих слов - скажу только, что, все более-менее крупные проекты, используют именно такой подход (кроме особо сложных случаев, которые сейчас не рассматриваются). Какие именно? Двух думаю будет достаточно: mail.ru, photofile.ru. К чему усложнять код?
Пришел с return_url, после выполнения действия отправился обратно, без - пошел на дефолтный урл (на главную, к примеру).

Цитата(Fortop @  22.4.2008,  18:14 Найти цитируемый пост)
Цитата
http://some.com/page4.php?returnto=http://...e.com/index.php


Использовать вот такое


Такое может получиться только если руки растут из ж*ы.

Это сообщение отредактировал(а) IZ@TOP - 24.4.2008, 16:32


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

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


Эксперт
****


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

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



IZ@TOP, читаем внимательно, и соседнюю тему тоже


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.1267 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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