2010-02-17 3 views
4

Мне очень интересно узнать, как защитить пароли php.php post пароли?

Главный вопрос: как отправить пароль в виде защищенной строки из формы входа?

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

Как преобразовать поле пароля в зашифрованную строку перед отправкой? Это делается с помощью ajax?

Приветствия Ke

ответ

4

Проверьте протокол о HTTPS protocol

передачи гипертекста Secure (HTTPS) представляет собой комбинацию протокола передачи гипертекста с/протокола SSL TLS для шифрования и обеспечения идентификация сервера. HTTPS-соединения часто используются для платежных операций в World Wide Web и для конфиденциальных транзакций в корпоративных информационных системах. HTTPS не следует путать с безопасным HTTP (S-HTTP), указанным в RFC 2660.

Если вы не можете включить HTTPS для своего сайта и не хотите публиковать пароли cleartext (по очевидным соображениям безопасности), рассмотрите возможность использования Challenge-Response Authentication.

Просто google for various PHP/Javascript implementations и выберите тот, который вам нравится.

+0

Это то, что использует Facebook - журналы Facebook вы используете более SSL, а затем перенаправляет вас обратно на простой старый HTTP, с сеансом, чтобы вы вошли в систему. – Josh

2

Если вы не можете использовать безопасное соединение, вы можете зашифровать пароль перед отправкой.

JavaScript-псевдокод:

onSubmit: 
    PASSWORDFIELD.value = md5(PASSWORDFIELD.value) 

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

0

согласно Select0r Я сделал это, чтобы не изменить значение счетчика * -s после завершения заполнения:

onSubmit='encrypt_pass(this)' 

и

function encrypt_pass(form){ 
    form.pass_md5.value = md5(form.pass.value); //needs a hidden pass_md5 field 
    var stars = ""; 
    for(i=0;i<form.pass.value.length;i++) 
     stars = stars+"*"; 
    form.pass.value = stars; 
} 
+0

Что не защищает ничего. Злоумышленник просто поймает хэш-файл md5 (btw. Md5 имеет известные коллизии) и отправит его на страницу, чтобы войти в систему. Действенным паролем для страницы является хеш-память md5. –

Смежные вопросы