Эффективно ли мой алгоритм безопасности PHP хранит учетные данные пользователя?

Этот вопрос касается конкретной проблемы программирования, с которой я столкнулся - я хочу убедиться, что мой код (и программный алгоритм) достаточны для хранения учетных данных пользователя в базе данных.

// Get a 32 character salt like '69Mt6nexL1rsjWnu011S53MpB/WmT4Vl'
$passwordSalt = Security::generateBase64Salt();

$user = new User();
$user->setUsername($_POST['username']);

// $_POST['password'] comes in as a 128 character string
// Client side javascript is used to sha512 the string before sending it over POST
// see http://pajhome.org.uk/crypt/md5/
// This prevents novice eavesdroppers from capturing the raw password in plaintext
$user->setPassword(
    hash('sha512', $passwordSalt.$_POST['password'])
);
$user->setPasswordSalt($passwordSalt);
$user->save();

Вот запись базы данных для конкретного пароля:

alt text

пароль:

69a78a7586a111b8a567b2d4f42f93f01fb59d337f7fa3c35949a66b246095778c1fa01ff4026abace476091e1e9a183bbdec1c31b12ce3f786921895c98cf6f

Соль:

69Mt6nexL1rsjWnu011S53MpB / WmT4Vl

Вопросы:

  • Существуют ли какие-либо недостатки наследования с этим алгоритмом?
  • Можно ли хранить соль в той же базе данных и таблице, что и хэш соли + пароля?
  • Будет ли большой пароль длиной 128 символов вызывать проблемы с производительностью входа ( на несколько секунд) если у меня в таблице несколько сотен тысяч пользователей?
  • Можно ли сторнировать эти данные для получения оригинального пароля?

Для удовольствия:

Я заплачу вам 5 долларов, если вы сможете предоставьте мне оригинальный пароль, используя хэш соли и соли + пароля.

6
задан Kirk Ouimet 20 August 2010 в 02:52
поделиться