Способы определения возврата «анонимных» гостей в PHP - PullRequest
1 голос
/ 17 мая 2009

Два типа пользователей посещают мой сайт: зарегистрированные пользователи и гости. Зарегистрированные пользователи отслеживаются и хранятся в сеансе PHP, в файлах cookie и в отдельных учетных записях. Гости, которых я считаю более хитрыми в управлении, поэтому я почти не даю полномочий вносить контент.

Я хочу открыть редактирование для пользователей (зарегистрированных или нет), чтобы сохранять избранное, корзины покупок, голосовать в опросах, модерировать, отмечать, загружать и комментировать. В то же время защитите данные от других незарегистрированных пользователей.

Какие существуют варианты или рекомендации для определения уникального посетителя от другого и какие меры безопасности следует учитывать при предоставлении им возможности вносить больший вклад? Должен ли я обойти их настройки безопасности / ограничений, чтобы предоставить услугу вклада, или я должен ожидать, что они встретятся посередине и ослабят некоторые из своих настроек, чтобы разрешить использование файлов cookie и т. Д.?

IP-адрес - IP-адрес является дополнительным, но только временным. Это может измениться для пользователя, повторно подключающегося к его Интернету с другим IP, и в этом отношении другой пользователь может в конечном счете разделить тот же IP. IP также может быть анонимным, общим или вводящим в заблуждение.

Сеансы PHP - ОК для сеанса (и если включен), но потерян при закрытии браузера.

Cookies - Может хранить данные сеанса, но легко (и часто) отключается со стороны клиента.

Данные заголовка - объединение известных сведений о том, что пользователь может, по крайней мере, группировать пользователей - интернет-провайдера, браузера, операционной системы, ссылающегося веб-сайта и т. Д.

Редактировать: Я все еще не могу разобраться во всех ключевых факторах, которые мы задействовали ... мы создали файл cookie для гостя. Приложите кучу правок и истории пользователей к этому сеансу. Если cookie удаляется, данные перемещаются, ничего не связывая, и пользователь теряет свои данные. Или, если пользователь входит в систему, данные гостя и пользователя должны быть объединены ...

Ответы [ 4 ]

3 голосов
/ 17 мая 2009

Я думаю, что куки, вероятно, были бы лучшим вариантом здесь, поскольку это единственный способ, которым вы будете на 100% уверены, что запросы уникальны. Конечно, вы можете добавить смесь: если куки отключены, вы можете попробовать другие варианты идентификации, такие как метод IP-адреса, но это может сделать его слишком сложным.

Как вы говорите, IP-адрес может изменяться, и в некоторых организациях может существовать группа настроек прокси-серверов, которые отправляют запросы с разных IP-адресов. Конечно, вы можете проверить X_FORWARDED_FOR, но они все еще могут измениться.

Данные заголовка, вероятно, окажутся трудными для получения хороших результатов, я думаю. Если у вас есть организация с таким же браузером, ОС, IP, она покажет людям, что они одинаковы. Даже люди, не принадлежащие к той же организации, могут все еще выглядеть похожими (то есть пользователи AOL, которые обычно направляют свой трафик через прокси-серверы, большинство из них, вероятно, будут использовать «браузер AOL», который поставляется вместе с ним с одинаковыми заголовками).

Из этих двух вариантов IP будет легко реализовать, но, очевидно, есть проблемы, которые я обрисовал. Я думаю, что проверка уникальных данных в заголовках окажется абсолютной болью.

Очевидно, как вы говорите, сеансы теряются при закрытии браузера, и кажется, что вы хотите, чтобы система работала так, как если бы они были зарегистрированным пользователем, поэтому файлы cookie кажутся более очевидным выбором (особенно если вы хотите, чтобы «избранное» было стойкие).

1 голос
/ 18 мая 2009

Вы должны использовать сеансы. Идентификаторы сеансов хранятся в cookie (или для пользователей, которые не принимают cookie, хранятся в URL с аргументом PHPSID) Они не будут удалены, когда пользователь закроет свой браузер, это зависит только от того, как вы установили параметры сеанса / куки. Вы можете настроить время сеанса так, как вам хочется, так что не беспокойтесь об этом. Вы также должны сообщить об этом своему пользователю (включить cookie) Что касается данных, которые могут быть объединены при входе в систему, это ваша работа, правильно объединить их или даже спросить пользователя, должна ли опция быть сохранена.

1 голос
/ 17 мая 2009

Я бы просто пошел с сессиями.

Ваши пользователи могут изменять IP-адреса (склонные к смешиванию за NAT и прокси-серверами), изменять / удалять файлы cookie (безусловно, возможно) или изменять свой заголовок (легко с помощью переключения браузеров).

Не существует безопасного способа идентификации гостя, если он не хочет быть идентифицированным. Просто следуйте стандарту: куки / сессии.

0 голосов
/ 31 мая 2019

Вы можете использовать комбинацию всех идентифицирующих точек, которые вы можете найти, которые вряд ли изменятся и могут быть уникальными - глядя на panopticlick , вы можете собрать кучу данных, таких как в качестве установленных шрифтов и плагинов для браузера. Вы можете взять такие виды более уникальных точек данных и хэшировать их, чтобы дать вам идентификатор, а затем сравнить его с менее уникальными данными, такими как useragents и ip address.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...