Отправка паролей через Интернет

Поэтому я работаю над мобильным платформенным приложением, которое я бы хотел, чтобы пользователи аутентифицировались через Интернет. Мне было интересно, как лучше всего обеспечить безопасность. Пользователь отправляет пароль для HTTP на php-сервер, который выполняет аутентификацию с базой данных mysql на том же сервере. Очевидно, что я не хочу отправлять пароль в виде обычного текста через Интернет, но я также не хочу делать 2 SHA-хэша.

Это то, что выглядит сервер (в псевдокоде)

$pass = $_POST['pass']; if ((get PASSWORD where USERNAME = USERNAME) == SHA($pass)) return PASS; 

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

Related of "Отправка паролей через Интернет"

  1. Если вы хотите безопасности, ВЫ. ДОЛЖЕН. ИСПОЛЬЗОВАНИЕ. HTTPS. С надлежащим, не самозаверяющим сертификатом. Независимо от того, что вы делаете, идентификаторы, прошедшие аутентификацию в незашифрованном сообщении, будут тривиальны для кражи. (Не обращайте внимания на пароль, злоумышленник может просто украсть файл cookie сеанса, который предоставляется с каждым запросом.)
  2. Хеширование бесполезно само по себе, вы должны его солить. (Это не связано с аутентификацией – это второй уровень защиты для случая, когда кто-то крадет вашу базу данных. Скорее всего, это произойдет рано или поздно, если вы станете многообещающей целью.) Используйте bcrypt с длинной случайной солью для каждого пользователя, sha * небезопасен, потому что он слишком быстр.
  3. Используйте методы, которые уже используются крупными проектами безопасности. Эти методы в какой-то мере выдержали испытание временем. Существуют методы, основанные на ответах на вызов, которые не позволяют отправлять пароль в любой форме, но крипто сложно, и очень легко реализовать безопасные алгоритмы небезопасным способом. Используйте хорошую систему безопасности (например, PHPass ), не полагайтесь на код, который широко не используется.

Вы можете использовать SSL, если ваше клиентское приложение поддерживает его.

Для обычной некритической системы большинство веб-сайтов отправляют пароль в виде обычного текста через Интернет во время HTTP-запроса. Затем пароль кодируется на стороне сервера SHA1 / MD5 и проверяется на значение в базе данных.

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

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

Другой интересный, но необычный подход – это сделать кодировку SHA1 в JavaScript, прежде чем делать (Ajax) почтовый запрос на сервер ( пример JS sha-1 ). Теоретически это может обеспечить вполне разумную безопасность …

И если этого все еще недостаточно, вы можете рассмотреть возможность установки клиентских сертификатов или системы ответа-ответа с помощью калькулятора или SMS.

Как отметил Пекка, SSL – ваш лучший вариант.

В качестве альтернативы использование SHA в JavaScript довольно просто, быстро, и оно уже написано. Вот пример и вот библиотека: crypto.js