Вопрос

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

Во-вторых, было бы лучше отобразить пароль пользователю в виде изображения, а не в виде текста.Я обеспокоен тем, что текст "соскабливается", что, как я предполагаю, было бы сложнее с изображением.Как мне убедиться, что изображение не будет кэшировано браузером пользователя?

заранее спасибо,

Это было полезно?

Решение

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

  1. Атака "Человек посередине" на текстовый трафик HTTP - изображение, особенно защищенное от распознавания текста (в стиле CAPTCHA), предотвратит эту атаку, но также и простое использование HTTPS, как упоминал порнеЛ.
  2. Очистка экрана приложением удаленного рабочего стола - защита HTTPS не поможет, равно как и изображение, поскольку беспорядок на экране в любом случае должен быть прочитан человеком (злоумышленник-человек также может обойти вашу защиту от запутанных изображений от "человека посередине", проинструктировав слушателя заархивировать изображение, а затем просмотреть их вручную).Если за скребком экрана находится человек, то у вас нет защиты.
  3. подслушивание через ваше плечо - если злоумышленник просто стоит за спиной пользователя, то опять же - у вас нет защиты.

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

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

Другие советы

Изображение не будет сильно защищено.

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

Важно убедиться, что страница, на которой отображается пароль, не подлежит кэшированию.

Cache-control: no-cache, no-store, must-revalidate

вы пробовали следующее?

  • вы не можете показать пароль, потому что вы его не храните.

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

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

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

При вводе пользователем нового пароля возникает та же проблема - теперь вы должны отправить его обратно на сервер.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top