безопасная аутентификация пользователя без JavaScript - PullRequest
2 голосов
/ 31 марта 2012

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

Это подводит меня к другой проблеме.Без сценариев на стороне клиента я понятия не имею, как я могу хэшировать пароль пользователя на стороне клиента, чтобы избежать передачи незашифрованного пароля.Как «чистый HTML + CSS» позволяет мне иметь хешированный пароль.

В настоящее время мне кажется, что единственный безопасный вариант (без Javascript) - это иметь безопасное (зашифрованное) соединение ssl / https иотправить пароль в виде открытого текста?

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

[обновление] Я знаю, что SSL, возможно, наиболее близок к идеальному способу.(как указано в комментариях) Во всяком случае.Это было бы уже улучшением безопасности, когда никогда не отправлялось бы незащищенное имя пользователя и незашифрованный пароль по небезопасному каналу.Хэши также могут быть перехвачены, и никакой безопасности (то есть шифрования) там быть не может.НО ни разу сниффер не сможет получить неснятую версию имени пользователя и пароля.=> преимущество заключается в том, что пользователи не будут публиковать свою комбинацию имени пользователя и пароля (возможно, используется в другом месте).

В конце концов, похоже, что «сценарий отключен» - путь (spice) хэширования некоторых значений поля ввода.Поэтому я предполагаю, что мой вопрос неразрешим.

1 Ответ

2 голосов
/ 30 июля 2012

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

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

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

Я думаю, что вы ищете двухфакторная аутентификация .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...