2012-02-22 2 views
1
$pass = substr(md5($_SERVER['REMOTE_ADDR'].microtime().rand(1,100000)),0,6); 
     $insert = mysql_query("INSERT INTO users(username, password) VALUES('".$username."', '".md5($pass)."')"); 

илиСохраните пароль из формы php. Что из этого более безопасно?

$salt = "zfgse5tfgHk2jdf4hGiuyeV9trejkewQ5kjujPhysftf7agfd"; 
$pass = crypt($password, "$1$".$salt); 
$insert = mysql_query("INSERT INTO users (username, password) VALUES ('".$username."', '".$pass."')"); 

Я спасаю данные формы из формы регистрации PHP. Какой из приведенных выше кодов является безопасным? Что-нибудь лучше этих?

+2

Не добавляйте variebles непосредственно для запроса, используйте параметры - http://php.net/manual/en/book.pdo.php –

+0

Я лично использую [phpass] (http://www.openwall.com/phpass/). –

ответ

2

Метод № 1 полностью сломает все, вы никогда не сможете войти в систему снова. Довольно безопасно (если вы не избегаете $username, и в этом случае это совершенно бесполезно), но, вероятно, не ваше намерение.

Метод № 2 будет работать; но это выглядит немного глупым, сложным способом сделать что-то, что должно быть просто.

Вот что я обычно использую:

public static function Hash($value) { 
    return hash('sha512', hash('sha512', $value) . Config::HashSalt); 
} 

Config::HashSalt, где находится ваша длинная, гораздо более случайная строка соли. Это должно быть в классе. Вот пример структуры: https://github.com/minitech/ReTicket/blob/master/config.php

+0

Да! Я попробую! Благодаря! – user830363

0

Второй вариант (первый совершенно неправильно), но немного изменился:

  1. Использование sha512 (Никогда не используйте md5)
  2. Использование пользователем соль отличается для каждого пользователя, но который хранится в БД
  3. соль использования сервера, лучше всего с некоторыми специальными символами, которые не являются на клавиатуре
  4. Используйте параметров для вставки переменных в запрос (php.net/manual/en/book.pdo.php)
+0

Это кажется хорошим вариантом, используя уникальную соль пользователя и соль сервера. Я тоже попробую! – user830363

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