2013-09-28 3 views
-1

Прежде всего, я искал в Google и не нашел никакой помощи по моей проблеме.md5 возвращает пустую строку

Я работаю на своем локальном сервере с помощью MAMP, и я следую учебнику, чтобы попытаться обеспечить php-страницу с помощью md5.

В моей странице login.php есть форма с полями Логин/пароль, который вызывает функцию JS при представлении:

<form id='log' method='post' action='templates/auth.php' onsubmit='javascript:submit_pass();'> 
<input type='hidden' name='md5' /> 
<table align='center'> 
<tr><td>Login</td><td><input name='login' /></td></tr> 
<tr><td>Mot de passe</td><td><input type='password' name='passwd' /></td></tr> 
<tr><td colspan='2' align='center'><input type='submit' value='Login !' /></td></tr> 
</table> 
</form> 

login.js скрипт призвал отправить:

function submit_pass() 
{ 
    pass=document.forms['log'].passwd.value; 
    document.forms['log'].passwd.value=""; 
    buf=MD5(pass); 
    document.forms['log'].md5.value=buf; 

    return true; 
} 

Затем он отправляет параметры POST на auth.php

Так что я вводил в полях случайный логин и пароль.

На моей странице auth.php Я присоединяюсь $ _POST [ 'Войти'] и $ _POST [ 'md5']

Проблема заключается в том, что $ _POST [ 'md5'] пусто. Поэтому я стараюсь эхо его размер и появляется 0!

У меня нет undrestand, чего-то не хватает? Неправильно?

Благодаря

+0

'buf = MD5 (pass);' - где функция 'MD5'? –

+2

Не беспокоить хеширование паролей перед их передачей по сети; вы не получите никакой безопасности. Если я могу захватить хэш пароля, я также могу захватить файл cookie сеанса или использовать таблицы радуги, чтобы узнать пароль. Вместо этого используйте HTTPS. – Oswald

+1

, пожалуйста, не используйте MD5 для пароля хеширования. –

ответ

2

Не хэш пароля на клиенте. Это не улучшит безопасность, потому что ничего не изменилось: сервер может видеть только хеш MD5 и имя пользователя, и если я могу перехватить это, у меня есть все, что мне нужно, чтобы войти в систему! Потому что сервер может только проверить MD5.

Кроме того, Javascript не оснащен встроенной функцией MD5.

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

Если вы действительно хотите улучшить защиту паролем, вы должны использовать SSL для взаимодействия клиент-сервер (в противном случае все отправляется как чистый текст), а на сервере вы должны использовать хэш с новой и блестящей функцией password_hash() PHP 5.5 (и есть compatibility library, что позволяет делать это, начиная с PHP 5.3.7).

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