Ну вот, начинается игра в двойные стандарты. Сперва вы говорите, что эта система работоспособна для любых ресурсов, теперь что для заказа пиццы не работоспособна.
Эту ситуацию не нужно разруливать, она приведена для примера, причем в иллюстративном варианте.
Вам нужно просто принять, что идентификация пользователя по факту «тот же компьютер, тот же браузер, те же куки» чревата ошибками, как минимум, а как максимум — нежелательными последствиями для пользователя.
И чтобы далеко не уходить от темы, все-таки ответьте на вопрос, обозначенный предыдущим комментарием: вы действительно считаете, что пользователь должен подтверждать свой заказ через e-mail? или даже телефон?
Замечу: одно дело, когда я оставил на сайте телефон, по которому мне (!!!) перезванивают, и я говорю «да, все правильно, это именно я, заказал именно это, везите скорее, жрать хочу».
И совсем другое дело, когда после нажатия кнопки «заказать!» я должен самостоятельно выполнить еще какие-то действия (нажать ссылку в письме, или дождаться смс и отправить в ответ другое смс).
Считаю, что такие подтверждения сводят на нет все ваши благие желания по упрощению жизни пользователям.
«Вы всё упираетесь в вопрос: кто-то находясь в моей сессии выполняет какие-то действия категории 2, а сайт думает, что это я. Так думает абсолютно ЛЮБОЙ сайт пока сессия не закрыта на сервере и время куки не истекло в браузере.»
Может быть, в этом вопросе и кроется наше с вами взаимное непонимание.
Никакой абсолютно любой сайт не думает, что это я выполняю какие-то действия. Абсолютно любой сайт думает, что это кто-то на том же компьютере и в том же браузере выполняет эти действия. Абсолютно любому сайту абсолютно наплевать, делаются эти действия одним человеком или разными. До тех пор, пока этот человек не авторизовался. То есть не ввел свой логин и пароль.
Допустим, вы в неком блоге оставили комментарий. Зашли в этот блог через пару дней и обнаружили в форме комментария услужливо подставленные ваше имя и e-mail. Вы считаете, это доказывает, что «сайт все еще считает, что за компьютером сидит тот же человек»? А вот и нет. Сайт предполагает (если можно так выразиться), что это тот же человек, поэтому предлагает ему сократить свои действия. А если это другой человек — наплевать, он просто стирает ваше имя и пишет свое. Сайту до этого дела нет.
А вот следуя вашему алгоритму сайт, в случае, если в форму комментария будет написано другое имя, должен такую ситуацию трактовать как «пользователь принял решение изменить свое имя, а возможно, и пол».
Да простят меня хабра-пользователи за выкрутасы вокруг слов «сайт думает, сайт считает» ))))
Вот именно такой расклад мне и не нравится.
1. для выполнения заказа требуется подтверждение через email — это значит, что все наши с вами разговоры про упрощение жизни пользователей летят в тар-тарары. Для выполнения заказа вы предлагаете мне сделать еще одно действие (причем не простое! я должен войти в свою почту, найти там письмо и нажать ссылку)? А если я на вражеском компьютере не хочу входить в почту, потому что придется вводить пароль? Я просто хочу чтобы вы мне привезли пиццу — вот мой адрес, вот телефон. Если бы такое произошло в жизни (я выбирал пиццу, оформлял заказ, нажал «заказать!» — опа — оказывается, мне надо теперь лезть в почту, подтверждать заказ? — сразу ухожу на другой сайт)
2. допустим, я не подтверждаю заказ через email, я просто ввел его куда просили и уехал к себе домой (в наивных ожиданиях, что мой email был запрошен исключительно для целей информирования). Дома я вижу в письме ссылку на регистрацию, нажимаю, авторизуюсь, захожу на ваш сайт, смотрю историю моего посещения — опа — оказывается я на вашем сайте не только пиццу искал, но и какие-то секс-игрушки? (а это ХЧК ничтоже сумняшеся просто гулял по сайту после моего отъезда, не желая собственно никакого вреда мне, ему же не было предложено де-идентифицироваться).
Одним словом, чем дальше в лес — тем толще партизаны.
Продолжаю считать вашу идею заслуживающей внимания при двух дополнениях:
1. не для любого ресурса
2. при вводе email я должен явным образом указать «зарегистрируйте этот email» (простая галочка, остальное как вы и описали)
Вы еще сильнее усложнили вашу ситуацию с этим апдейтом %))))
Сейчас вам и про капчу скажут, и про «такое сложное действие как заказ», про обобщение вашей идеи на «любой ресурс в независимости от его сложности и масштабности».
Давайте попробуем с другой стороны подойти к вашей идее.
Допустим, вы реализовали его в интернет-магазине. Я — покупатель. Я в данный момент времени нахожусь далеко от дома, в другой стране, мне жизненно необходимо сделать заказ в вашем магазине. При этом я хочу, чтобы на мой email пришло подтверждение об этом заказе (как минимум, чтобы в почте сохранились позиции заказа и сумма, чтобы потом я смог проверить), то есть email я обязательно укажу. Но при этом я не хочу, чтобы мой email был зарегистрирован (я ведь сижу на чужом компьютере, мне бы не хотелось, чтобы потом человек с него продолжал делать покупки от моего имени).
Предложите реализацию?
Это когда «все пользователи равны, но некоторые равнее» %)))
Одним словом, когда у авторизованного пользователя есть возможность сделать какие-то действия, которые у не-авторизованного отсутствуют. Здесь речь не о получении дополнительной информации (история заказов, например) и не получении дополнительных профитов (скидки и бонусы), а именно о действиях. Возможность редактирования чего-то, закачивания файлов, еще что-то более серьезное. То, что в чужих руках может нанести мне вред.
Собственно, весь сыр-бор именно из-за вот этой крамольной фразы:
«Если будет вход через день с того же браузера и с того же компьютера, то понятно, что это тот же пользователь, если через месяц – это всё равно тот же пользователь», отягощенной вот этим: «Можно увеличить время хранения идентификатора сессии в куках у посетителя и самой сессии на сервере. Думаю, даже нужно, для большей надёжности.»
Не стоит грести под одну гребенку. На каждом сайте свой функционал и своя аудитория.
И по поводу тезиса «Не стоит навязывать посетителям непривычный функционал» тоже есть сомнения. Этак мы бы с вами до сих пор на счетах считали.
Собственно, в целом я позицию автора топика поддерживаю. Если речь идет об интернет-магазине (или просто бизнес-сайте, весь функционал которого сводится к отправке заявки), то в этом случае как раз такой способ регистрации вполне удобен (я делаю заказ и попутно регистрируюсь, а не наоборот, как обычно навязывают мне: сперва зарегистрируйся, а уж потом делай заказ), он минимизирует мои действия и не заставляет задумываться, все ли я делаю правильно. Собственно, на таких сайтах весь дополнительный профит в авторизации заключается в просмотре истории, виш-листах и бонусах. Ну то есть ничего такого, что может мне навредить, если попадет в чужие руки (кроме, может быть, испорченного настроения от того, что кто-то тут побывал).
Совсем другая история, если речь идет о сервисах, предполагающих дополнительные возможности. Там, я считаю, авторизация (как и регистрация) обязана быть явной.
Лично меня больше смущает тот факт, что я, вводя email «где-то на сайте» ни с того ни с сего вдруг оказался зарегистрированным, и мне на почту свалилось письмо, которое я не запрашивал. Оно, кстати, вообще может в спам свалиться, и я даже не узнаю, что мой email оказывается был зарегистрирован.
Получается, при такой реализации необходимо (чтобы все было грамотно):
— на сайте при вводе email давать пользователю возможность явным образом этот Email зарегистрировать (рядом с полем ввода email галочка «зарегистрируйте и отправьте мне на этот адрес пароль»)
— как ни крути, подтверждение email, то есть должна быть в письме ссылка «подтвердите этот адрес». Без этого никак.
Это уже вопрос реализации. В письме можно на самом видном месте поставить ссылку «смените сгенерированный пароль прямо сейчас», а ниже вообще можно написать полное руководство по работе с аккаунтом.
Всё понятно. Тогда ничего нового.
Единственное, на что хотел обратить внимание: такая неявная авторизация, которую вы предлагаете, имеет право быть реализованной только для тех ресурсов, в которых авторизация, по большому счету, не очень-то и нужна.
Во всех случаях, когда авторизация важна (личный счет, конфиденциальная информация, дополнительные возможности и т.п.) регистрация должна быть явной.
Вот поэтому и вопрос о необходимости авторизации. Одно дело — скрыть от других пользователей историю своих действий (хрен с ним, даже если узнают), совсем другое — если у пользователей разные права на действия (например, я модерирую форум, а моя мама иногда его читает. Вовсе бы не хотелось, чтобы она имела возможность случайно что-то почистить)
Наверное, я попросту из вашей статьи не понял этого самого механизма. Поправьте меня, если я ошибаюсь. Вы предлагаете следующее:
1. пока пользователь не авторизовался «явным образом», мы опознаем его по идентификатору сессии в куках
2. как только где-то на сайте неавторизованный пользователь ввел свой email (например, сделал заказ), мы сразу регистрируем этот email и отправляем ему сгенерированный пароль
3. в дальнейшем этот пользователь может использовать этот пароль для авторизации.
Правильно?
Собственно, мое сомнение, выраженное в предыдущем комментарии, касалось лишь одного момента: неявность процедуры регистрации. То есть я зарегистрировался, сам того не желая. Для простых случаев этого вполне достаточно (наверное).
Посмотрим на это с другой стороны. Я захожу на сайт с явным намерением зарегистрироваться. Ну вот по каким-то причинам хочу это сделать. Как мне этого добиться?
На мой взгляд, разговор о реализации авторизационных механизмов необходимо начинать с тех задач, для которых эта самая авторизация и осуществляется. Предполагается ли использование конфиденциальных сведений (помимо сбора статистики)? Дополнительные сервисы? Разделенный доступ к информации? И так далее и тому подобное.
А пока авторизация имеет смысл лишь для просмотра истории своих действий, действительно, вполне достаточно хранить в куках идентификатор.
в РАО тоже грамотные люди силят. И в правительствах всех стран. Речь о том, что мы сами создаем законы, которые позволяют: а) легко обогащаться отдельным людям за счет разорения других людей и б) отказываться от прогрессивных идей и реализаций под угрозой этого самого разорения. Не знаю, понятно ли выразился…
Патентная система, вы правы, никакого отношения к юриспруденции не имеет. Патент — это всего лишь инструмент ДОКАЗАТЕЛЬСТВА наличия права обладания интеллектуальной собственностью. То есть в какой-то момент «грамотные люди» придумали такую штуку: а давайте, кто первый запатентует, того и тапки! и все вокруг сказали: о, давайте! давайте! я запатентую удочку! а я способ дефекации! а я… а я пока не знаю, что запатентую… но как только придумаю, сразу стану миллионером!
Вообще никогда не понимал сам принцип патентной системы.
На мой взгляд, привлечение к ответственности за использование чужой запатентованной идеи в корне противоречит принципу презумпции невиновности.
Я использовал вашу идею в своей разработке? Эта идея вами запатентована? Но я утверждаю, что придумал ее сам, не воруя у вас и не подсматривая. Следуя презумпции невиновности, я не должен доказывать свою невиновность, пока вы не доказали обратное. Докажите, что я подсмотрел идею у вас, а не придумал сам?
По поводу игры отдельная история, здесь речь о ролике.
Какой-то финал у ролика должен быть, например, когда экран заполняется рыбами, у папы-пингвина взрывается мозг, или он превращается в дьявола, или в супер-пингвина с огромными мышцами, или просто камера отъезжает, показывает земной шар и на нем происходит нечто типа ядерного взрыва, только из рыбешек. Одним словом, какая-то точка. Вот этого не хватает в ролике.
Вам нужно просто принять, что идентификация пользователя по факту «тот же компьютер, тот же браузер, те же куки» чревата ошибками, как минимум, а как максимум — нежелательными последствиями для пользователя.
Замечу: одно дело, когда я оставил на сайте телефон, по которому мне (!!!) перезванивают, и я говорю «да, все правильно, это именно я, заказал именно это, везите скорее, жрать хочу».
И совсем другое дело, когда после нажатия кнопки «заказать!» я должен самостоятельно выполнить еще какие-то действия (нажать ссылку в письме, или дождаться смс и отправить в ответ другое смс).
Считаю, что такие подтверждения сводят на нет все ваши благие желания по упрощению жизни пользователям.
Может быть, в этом вопросе и кроется наше с вами взаимное непонимание.
Никакой абсолютно любой сайт не думает, что это я выполняю какие-то действия. Абсолютно любой сайт думает, что это кто-то на том же компьютере и в том же браузере выполняет эти действия. Абсолютно любому сайту абсолютно наплевать, делаются эти действия одним человеком или разными. До тех пор, пока этот человек не авторизовался. То есть не ввел свой логин и пароль.
Допустим, вы в неком блоге оставили комментарий. Зашли в этот блог через пару дней и обнаружили в форме комментария услужливо подставленные ваше имя и e-mail. Вы считаете, это доказывает, что «сайт все еще считает, что за компьютером сидит тот же человек»? А вот и нет. Сайт предполагает (если можно так выразиться), что это тот же человек, поэтому предлагает ему сократить свои действия. А если это другой человек — наплевать, он просто стирает ваше имя и пишет свое. Сайту до этого дела нет.
А вот следуя вашему алгоритму сайт, в случае, если в форму комментария будет написано другое имя, должен такую ситуацию трактовать как «пользователь принял решение изменить свое имя, а возможно, и пол».
Да простят меня хабра-пользователи за выкрутасы вокруг слов «сайт думает, сайт считает» ))))
1. для выполнения заказа требуется подтверждение через email — это значит, что все наши с вами разговоры про упрощение жизни пользователей летят в тар-тарары. Для выполнения заказа вы предлагаете мне сделать еще одно действие (причем не простое! я должен войти в свою почту, найти там письмо и нажать ссылку)? А если я на вражеском компьютере не хочу входить в почту, потому что придется вводить пароль? Я просто хочу чтобы вы мне привезли пиццу — вот мой адрес, вот телефон. Если бы такое произошло в жизни (я выбирал пиццу, оформлял заказ, нажал «заказать!» — опа — оказывается, мне надо теперь лезть в почту, подтверждать заказ? — сразу ухожу на другой сайт)
2. допустим, я не подтверждаю заказ через email, я просто ввел его куда просили и уехал к себе домой (в наивных ожиданиях, что мой email был запрошен исключительно для целей информирования). Дома я вижу в письме ссылку на регистрацию, нажимаю, авторизуюсь, захожу на ваш сайт, смотрю историю моего посещения — опа — оказывается я на вашем сайте не только пиццу искал, но и какие-то секс-игрушки? (а это ХЧК ничтоже сумняшеся просто гулял по сайту после моего отъезда, не желая собственно никакого вреда мне, ему же не было предложено де-идентифицироваться).
Одним словом, чем дальше в лес — тем толще партизаны.
Продолжаю считать вашу идею заслуживающей внимания при двух дополнениях:
1. не для любого ресурса
2. при вводе email я должен явным образом указать «зарегистрируйте этот email» (простая галочка, остальное как вы и описали)
Сейчас вам и про капчу скажут, и про «такое сложное действие как заказ», про обобщение вашей идеи на «любой ресурс в независимости от его сложности и масштабности».
Давайте попробуем с другой стороны подойти к вашей идее.
Допустим, вы реализовали его в интернет-магазине. Я — покупатель. Я в данный момент времени нахожусь далеко от дома, в другой стране, мне жизненно необходимо сделать заказ в вашем магазине. При этом я хочу, чтобы на мой email пришло подтверждение об этом заказе (как минимум, чтобы в почте сохранились позиции заказа и сумма, чтобы потом я смог проверить), то есть email я обязательно укажу. Но при этом я не хочу, чтобы мой email был зарегистрирован (я ведь сижу на чужом компьютере, мне бы не хотелось, чтобы потом человек с него продолжал делать покупки от моего имени).
Предложите реализацию?
Одним словом, когда у авторизованного пользователя есть возможность сделать какие-то действия, которые у не-авторизованного отсутствуют. Здесь речь не о получении дополнительной информации (история заказов, например) и не получении дополнительных профитов (скидки и бонусы), а именно о действиях. Возможность редактирования чего-то, закачивания файлов, еще что-то более серьезное. То, что в чужих руках может нанести мне вред.
«Если будет вход через день с того же браузера и с того же компьютера, то понятно, что это тот же пользователь, если через месяц – это всё равно тот же пользователь», отягощенной вот этим: «Можно увеличить время хранения идентификатора сессии в куках у посетителя и самой сессии на сервере. Думаю, даже нужно, для большей надёжности.»
И по поводу тезиса «Не стоит навязывать посетителям непривычный функционал» тоже есть сомнения. Этак мы бы с вами до сих пор на счетах считали.
Собственно, в целом я позицию автора топика поддерживаю. Если речь идет об интернет-магазине (или просто бизнес-сайте, весь функционал которого сводится к отправке заявки), то в этом случае как раз такой способ регистрации вполне удобен (я делаю заказ и попутно регистрируюсь, а не наоборот, как обычно навязывают мне: сперва зарегистрируйся, а уж потом делай заказ), он минимизирует мои действия и не заставляет задумываться, все ли я делаю правильно. Собственно, на таких сайтах весь дополнительный профит в авторизации заключается в просмотре истории, виш-листах и бонусах. Ну то есть ничего такого, что может мне навредить, если попадет в чужие руки (кроме, может быть, испорченного настроения от того, что кто-то тут побывал).
Совсем другая история, если речь идет о сервисах, предполагающих дополнительные возможности. Там, я считаю, авторизация (как и регистрация) обязана быть явной.
Получается, при такой реализации необходимо (чтобы все было грамотно):
— на сайте при вводе email давать пользователю возможность явным образом этот Email зарегистрировать (рядом с полем ввода email галочка «зарегистрируйте и отправьте мне на этот адрес пароль»)
— как ни крути, подтверждение email, то есть должна быть в письме ссылка «подтвердите этот адрес». Без этого никак.
Единственное, на что хотел обратить внимание: такая неявная авторизация, которую вы предлагаете, имеет право быть реализованной только для тех ресурсов, в которых авторизация, по большому счету, не очень-то и нужна.
Во всех случаях, когда авторизация важна (личный счет, конфиденциальная информация, дополнительные возможности и т.п.) регистрация должна быть явной.
1. пока пользователь не авторизовался «явным образом», мы опознаем его по идентификатору сессии в куках
2. как только где-то на сайте неавторизованный пользователь ввел свой email (например, сделал заказ), мы сразу регистрируем этот email и отправляем ему сгенерированный пароль
3. в дальнейшем этот пользователь может использовать этот пароль для авторизации.
Правильно?
Собственно, мое сомнение, выраженное в предыдущем комментарии, касалось лишь одного момента: неявность процедуры регистрации. То есть я зарегистрировался, сам того не желая. Для простых случаев этого вполне достаточно (наверное).
Посмотрим на это с другой стороны. Я захожу на сайт с явным намерением зарегистрироваться. Ну вот по каким-то причинам хочу это сделать. Как мне этого добиться?
Например, домашние (семейные) компьютеры.
А пока авторизация имеет смысл лишь для просмотра истории своих действий, действительно, вполне достаточно хранить в куках идентификатор.
Патентная система, вы правы, никакого отношения к юриспруденции не имеет. Патент — это всего лишь инструмент ДОКАЗАТЕЛЬСТВА наличия права обладания интеллектуальной собственностью. То есть в какой-то момент «грамотные люди» придумали такую штуку: а давайте, кто первый запатентует, того и тапки! и все вокруг сказали: о, давайте! давайте! я запатентую удочку! а я способ дефекации! а я… а я пока не знаю, что запатентую… но как только придумаю, сразу стану миллионером!
На мой взгляд, привлечение к ответственности за использование чужой запатентованной идеи в корне противоречит принципу презумпции невиновности.
Я использовал вашу идею в своей разработке? Эта идея вами запатентована? Но я утверждаю, что придумал ее сам, не воруя у вас и не подсматривая. Следуя презумпции невиновности, я не должен доказывать свою невиновность, пока вы не доказали обратное. Докажите, что я подсмотрел идею у вас, а не придумал сам?
Какой-то финал у ролика должен быть, например, когда экран заполняется рыбами, у папы-пингвина взрывается мозг, или он превращается в дьявола, или в супер-пингвина с огромными мышцами, или просто камера отъезжает, показывает земной шар и на нем происходит нечто типа ядерного взрыва, только из рыбешек. Одним словом, какая-то точка. Вот этого не хватает в ролике.