Хэширование Javascript в вызовах входа в AJAX, больше безопасности? - PullRequest
5 голосов
/ 18 ноября 2011

Из многих постов, которые я видел на сайте, логины, выполняемые AJAX или традиционными формами, так же безопасны, как и другие. (re: Файлы cookie для входа / сеанса, Ajax и безопасность Файлы cookie для входа в Ajax и javascript, это безопасно? )

Мой вопрос (ы):

  1. Если я хеширую пароль пользователя (через хеш на стороне клиента / javascript библиотек) перед тем, как отправить его на сервер, нужно ли повысить безопасность от людей, которые потеряли доступ?

  2. Если я ставлю жетон формы (один случайный, другой основанный на времени), охватывает ли он атаки CSRF?

  3. Могу ли я покрыть все мои базы после всего этого? Будет ли эта форма безопасной?

Ответы [ 3 ]

5 голосов
/ 18 ноября 2011

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

Повторные атаки также являются проблемой. Если я перехватываю хеш во время аутентификации, что мешает мне просто воспроизвести этот запрос на аутентификацию?

Протоколы, которые используют функции дайджеста сообщения для аутентификации, предоставляют клиенту одноразовый номер, который используется как разовая соль. Аутентификация SMB NTLM от Microsoft - хороший пример, но у нее было много проблем .

USE SSL , а не только для входа в систему. OWASP A9 утверждает, что идентификатор сеанса никогда не должен передаваться по небезопасному каналу. В конце концов, кому небезразличен пароль, если вы просто предоставите реальные учетные данные для аутентификации через несколько миллисекунд.

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

1 голос
/ 18 ноября 2011

Немного в стороне, но в ответ на вопрос 3. НЕТ!Также помните, что AJAX и стандартные формы так же просто небезопасны , как и другие.

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

Вам также нужно будет рассмотреть такие вещи, как следующиеи т. д.

  • Реализация подходящего случайного и неосуществимого идентификатора сеанса для использования в файле cookie сеанса.
  • Не разрешать принудительное использование идентификатора сеанса.
  • Когда разрешения или учетные данные изменены (например, потому что пользователь уже вошел в систему или вышел из нее), немедленно аннулируйте сеанс и запустите новый.
  • Предоставьте возможность выхода из системы и обязательно отключите сеанс после выхода из системы.
  • Установите для cookie значение HttpOnly. - Предпочтительно, требуется HTTPS, а также установите cookie только для защиты.
  • Рассмотрите возможность ограничения действительности сеанса, включив проверку какой-либо другой информации, которая помогает сопоставить пользователя, например, user-agent.
  • Всегда прекращать сеансы после неиспользования и не реализовывать "держать меня в системе"переподключение пользователя к его старому сеансу http.
  • Убедитесь, что 2 сеанса не могут иметь один и тот же идентификатор сеанса одновременно
  • Убедитесь, что все данные сеанса уничтожены, когда сеанс признан недействительным.Приходящий новый пользователь может просто получить назначенный идентификатор сеанса, который использовался ранее.Этот новый сеанс не должен иметь доступа к данным сеанса, которые ранее были установлены для этого идентификатора сеанса.
0 голосов
/ 18 ноября 2011

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

...