Какой механизм аутентификации выбрать? - PullRequest
4 голосов
/ 18 февраля 2009

Ну, в свободное время я делаю этот маленький веб-сайт. Сайт не требует аутентификации, для этого требуются только некоторые действия (например, оставление комментария).

Я бы ожидал иметь до 100 (возможно, меньше) уникальных посетителей в день. Я действительно не ожидаю более 50% (потрудиться) зарегистрироваться.

Сейчас я думаю о трех возможных механизмах аутентификации (но я открыт для предложений):

  • Аутентификация OpenID;
  • Дайджест HTTP или как минимум HTTP Basic аутентификация;
  • Моя собственная (на основе формы) аутентификация.

OpenID мне кажется немного излишним для такого маленького сайта, как этот. Кроме того, модное слово типа «OpenID» на странице входа в мой сайт может отпугнуть менее опытных людей.

HTTP-дайджест (или базовая) аутентификация обеспечивает низкий уровень безопасности (или вообще никакого), поскольку сайт не будет работать по протоколу HTTPS.

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

Какие еще механизмы вы бы предложили? Какие плюсы и минусы я не вижу? Что бы вы выбрали?

Ответы [ 10 ]

4 голосов
/ 18 февраля 2009

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

Я думаю, что можно с уверенностью сказать, что люди, которым нравится интернет, имеют учетную запись gmail, и все эти люди имеют OpenID (учетную запись Google).

Я предлагаю вам использовать это ... это то, что я бы сделал.

1 голос
/ 18 февраля 2009

Обязательно используйте OpenID - чем больше людей у ​​нас на борту, тем больше знакомых людей станет с ним, и это не так уж и странно использовать в первый раз. Если вы разработчик Microsoft, библиотека dotNetOpenID делает реализацию довольно простой - я сделал это для сайтов ASP.NET и ASP.NET MVC без проблем.

EDIT:

Что касается поддержки пользователей, не разбирающихся в технологиях, то некоторые ссылки / пояснения на странице входа в систему помогут решить проблемы. Переадресация, которую они увидят, очень похожа на опыт, с которым они более знакомы, например, авторизация по кредитной карте или PayPal, поэтому их легко объяснить в этих терминах.

1 голос
/ 18 февраля 2009

Openid - лучшее, что я думаю. Также, если вы окажете помощь про открытый идентификатор (или как шоу SOF), тогда люди поймут. Как только люди, разбирающиеся в технических вопросах, поймут, что используют opend id (без нового имени пользователя и pwd), им это понравится.

1 голос
/ 18 февраля 2009

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

Просто убедитесь, что у вас есть некоторая блокировка спама, поскольку формы привлекают спам-ботов. Даже если это просто капча с формой каждый раз.

1 голос
/ 18 февраля 2009

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

  • Всегда дезинфицировать пользовательский ввод. Этому нельзя доверять;
  • Никогда не храните имя пользователя или пароль в куки (поверьте мне, люди так делают);
  • Храните только зашифрованные пароли, используя надежный метод шифрования, такой как MD5 или SHA1;
  • Используйте непредсказуемую соль;
  • Требовать, чтобы куки были включены. Не пытайтесь переписать URL.
0 голосов
/ 21 февраля 2009

Частично это зависит от вашей целевой аудитории. Если они все компьютерные гики, используйте OpenID. Они либо знакомы с этим, либо поймут, что вы делаете. Если они не обязательно являются компьютерными фанатами, возможно, они еще не подвергались аутентификации OpenID, поэтому OpenID может стать препятствием для входа. В этом случае вам может потребоваться пойти по более традиционному пути, например, зарегистрировать / подтвердить адрес электронной почты / войти в систему, будь то «по собственному усмотрению» или «с полки».

0 голосов
/ 21 февраля 2009

Мой совет: не изобретайте колесо. Веб-аутентификация - это колесо, если я его когда-либо видела, и очень трудно правильно обработать все тонкие ловушки. Скорее всего, вы что-то упустите и в итоге не получите безопасности.

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

См. Также: Полное руководство по аутентификации веб-сайта

0 голосов
/ 18 февраля 2009

Правила OpenID! Как информированный пользователь, я не уверен, что его рассмотрели до такой степени, что он «пуленепробиваемый» для безопасности, поэтому я, вероятно, не стал бы использовать его для финансовых / медицинских сайтов, но для 95% других сайтов это сэкономит мне от необходимости записывать мою шпаргалку из 137 различных имен пользователей и паролей. Я использовал его на (непубличном) сайте, который я разработал, и было немного хлопотно, чтобы заставить аутентификацию работать должным образом, но если вы можете использовать одну из библиотек, сделайте это!

HTTP-аутентификация стандартизирована, но что-то в этом беспокоит меня. Я не знаю, что. Что-то из-за того, что из браузера выскочило отдельное диалоговое окно, вызывает у меня подозрение.

p.s. Digital Planet Би-би-си имела радиопрограмму , которую моя местная радиостанция показала вчера (17 февраля 2009 г.), в которой говорилось об OpenID. Поэтому, я думаю, когда радио говорит об этом, оно должно начать распространяться.

0 голосов
/ 18 февраля 2009

Вы должны взглянуть на RPX (https://rpxnow.com/), это слой поверх OpenID и несколько других схем, которые для большинства языков действительно легко реализовать (есть драгоценный камень для ruby, и я знаю своего друга получил его в своем приложении php менее чем за пару часов).

0 голосов
/ 18 февраля 2009

Вы можете раздать RSA SecurID своим посетителям; -)

Серьезно, главный вопрос, который нужно задать: стоит ли общий час работы по внедрению достойной системы безопасности для моих пользователей, чтобы войти в систему, тот контент, к которому можно получить доступ, если безопасность сайта нарушена?

...