function encodePwd($salt, $string) {
return sha1( $salt . $string );
}
хотя бы на минуту подумайте о рандомизации соли. Кодировка пароля специально.
Если у меня есть соль «random» и пароль «complex», мой sha1 будет
e55ec45f2873a04d2b888a5f59dd3f9d3bb25329
хранится в базе данных. Я хочу проверить это.
Поэтому, когда пользователь вводит мне «сложный» в качестве пароля, я отмечаю «случайный» перед ним и кодирую его, чтобы получить тот же хеш. Если они равны, то базинга! я настроен
Но что, если это было случайно?
соль при хранении: «случайная»
SHA1: e55ec45f2873a04d2b888a5f59dd3f9d3bb25329
соль, когда пользователь вставил: "яблоко"
SHA1: e07b207d77a0bd27d321552fc934b186559f9f42
как я собираюсь соответствовать этим?
Если вы ищете более безопасный метод, используйте данные, которые у вас имеют и которые константа , такие как имя пользователя или идентификатор пользователя или что-то еще (желательно что-то, что не будет менять). Вам нужен шаблон, на который вы можете положиться.
имя пользователя будет работать хорошо (вам нужно будет обязательно обновить пароль, если они когда-либо изменят имя пользователя), таким образом аутентификация может выглядеть как
`WHERE `username` = '&username' AND `password` = '" . encodePwd( $username, $password ) . "'"`
function encodePwd( $username, $password) {
// maybe modify username on a non-random basis? - like
// $username = sha1( substr($username, 2)); // assuming usernames have a min-length requirement
return sha1( $username . $password ) ;
}