Как лучше всего защитить пароль пользователя из приложения для iPhone -> PHP -> MySQL? - PullRequest
1 голос
/ 27 июля 2011

Мне нужно отправить следующую информацию на сервер для сохранения через POST:

& username = xxxx & password = zzzzz

Должен ли я зашифровать это перед отправкой?Или просто отправить его через HTTPS (SSL) на мою страницу PHP?

На странице PHP я должен затем выполнить шифрование, чтобы сохранить его на сервере MySQL?

Нужна небольшая помощь здесь, каккакое лучшее приложение для iPhone -> PHP -> MySQL, как это сделать.

Ответы [ 4 ]

1 голос
/ 27 июля 2011

Отправка через HTTPS должна подойти для связи между приложением iPhone и PHP. Вы должны как можно скорее хешировать пароль, используя хороший алгоритм хеширования пароля.

Если вы не знакомы с хорошими методами хеширования паролей, вы можете найти это полезным: Как вы используете bcrypt для хэширования паролей в PHP?

0 голосов
/ 27 июля 2011

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

По сути, вы делаете следующее: когда пользователь устанавливает пароль, вы генерируете новую случайную строку ( salt ) и затем сохраняетепароль как результат хеширования (соль + пароль).Этот хэш должен быть сильной криптографической функцией (в настоящее время я бы рекомендовал SHA-256 или аналогичный).Таким образом, пароль открытого текста пользователя не может быть восстановлен, даже если ваш сервер скомпрометирован.

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

0 голосов
/ 27 июля 2011

HTTPS / SSL должно быть достаточно, если вы просто хотите защитить свои данные во время передачи.Очевидно, вам также может понадобиться хранить зашифрованные значения в вашей базе данных MySQL.В этом случае вам также следует зашифровать свои учетные данные перед выполнением запроса sql.

0 голосов
/ 27 июля 2011

Вы можете зашифровать пароль с помощью md5 () или создать собственную функцию шифрования / дешифрования.

Вот пример

Со стороны клиента

 $password = md5('password');

Для проверки с базой данных

 //security check
 $user = mysql_real_escape_string($_POST['username']);

 mysql_query("SELECT user_name, email FROM users WHERE username='".$user."' AND MD5(password)='".$password."'");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...