2012-05-20 2 views
2

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

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

Моей первой интуицией было бы не показывать другое сообщение, потому что это дало бы намеки потенциальным злоумышленникам о том, что не так, но иногда это затрудняет понимание пользователем своих ошибок (возможно, он просто ошибся в своей учетной записи логин и соответствующее сообщение об ошибке будут лучше). С другой стороны, я часто слышал, что имя учетной записи не было секретом (как пароль obivously is), и поэтому предоставление информации об этом не должно опускать уровень безопасности.

У вас, ребята, есть хорошая практика/логическое обоснование, что я должен придерживаться этого?

Спасибо.

ответ

4

Не различайте их - это информация, которая может использоваться злонамеренными сторонами.

Если они знают, что имя пользователя правильно, у них уже есть ценная информация, которую вы просочились.

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

+2

Кроме того, если есть "забыли пароль?" в поле, где вы вводите адрес электронной почты для сброса пароля (и будем надеяться, что он будет сброшен, а не будет возвращать оригинальный пароль назад), вы всегда говорите, что отправлено электронное письмо, даже если адрес электронной почты не зарегистрирован. Сообщая пользователю, что адрес электронной почты не зарегистрирован, вы можете продолжать пробовать разные адреса электронной почты, пока они не попадут в хит. – adrianbanks

0

Обычная практика - вести себя одинаково в случаях borh, чтобы не помочь злоумышленнику выяснить, какие имена пользователей действительны. Если он уже умрет, никакого вреда не будет, а если нет, не облегчайте его. Это один из сценариев, когда неудобство для законных пользователей считается менее важным, чем защита от злобных третьих сторон.

0

Существует различие между «сообщением» и «кодом ошибки».

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

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

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

0

Я утверждаю, что нет никаких конкретных причин не сообщать пользователю, что случилось.вопрос был задан раньше, и вы можете увидеть мой ответ здесь (но, пожалуйста, простите мой плохой английский): https://stackoverflow.com/a/8612838/455006

Но основные моменты таковы: Система должна быть сделана так, что скотина форсирования так сложно, как это возможно, даже если злоумышленник знает имя пользователя, и вы должны более или менее рассчитывать на то, что «они» знают по крайней мере одно имя пользователя, поскольку существует множество способов угадать или рассчитать их с некоторой степенью точности. Чтобы полагаться на злоумышленника, не зная, что имя пользователя граничит с безопасностью, а это плохо, а также если вы всегда рассчитываете на злоумышленника, знающего имена пользователей, ваши схемы и планы безопасности, скорее всего, будут намного лучше.

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

Смежные вопросы