Соление в PHP и MySQL - PullRequest
       4

Соление в PHP и MySQL

0 голосов
/ 19 июля 2010

Я занимаюсь разработкой библиотеки для входа на веб-сайт с использованием CodeIgniter.Код аутентификации следующий:

function signin($username, $password)
{
    $CI =& get_instance();
    $query_auth=$this->db->query('SELECT user_id, banned FROM user WHERE username=? AND password=SHA1(CONCAT(?,salt)) LIMIT 1', array($username, $password));

    if($query_auth->num_rows()!=1)
        return 2;
    else
    {
        if($query_init->row()->banned==1)
            return 3;
        else
        {
            $CI->load->library('session');
            $this->session->set_userdata('gauid', $query_auth->row()->user_id);
            return 1;
        }
    }
}

Возвращаемые значения, означающие успех, неудачу или запрет.У каждого пользователя есть уникальная соль, хранящаяся в базе данных.

Первоначально я взял соль из базы данных, соединил введенный пользователем пароль и соль из базы данных в PHP, а затем снова запросил базу данных с объединенным значением.Я думал, что это ускорит процесс, так как требуется только одна поездка в базу данных, а кода меньше.Я также подумал, что это будет в равной степени безопасно, однако после прочтения топ-ответа на этот вопрос Соль мои хэши с PHP и MySQL ...

Прежде всего, ваша СУБД(MySQL) не требуется поддержка криптографических хэшей.Вы можете делать все это на стороне PHP, и это также то, что вы должны делать.

... Я начал задаваться вопросом, была ли проблема с безопасностью, которую я не заметил.

Есть ли что-то не так в этом коде?

1 Ответ

2 голосов
/ 19 июля 2010

Само по себе ничего плохого.Имейте в виду, что любой трафик с незашифрованным / не зашифрованным паролем является подозрительным.Так, например, когда сервер является удаленным и не взаимодействует с шифрованием при взаимодействии с этим сервером, это еще один момент, чтобы попытаться перехватить пароль.Кроме того, если запросы регистрируются где-то (либо по умолчанию, либо потому, что они медленные), у вас есть простой пароль + соль, которую вы используете, находясь в этих журналах сервера, после всех трудностей, которые вы прошли, чтобы сохранить незашифрованный парольгде-то.Если бы вы делали это в частном порядке в своем собственном коде, этого бы не случилось.

Все зависит от того, насколько вам нравится быть параноиком.Там гораздо легче злоупотреблять и часто забывать зло, как, например, фиксация сеансов.

...