Ben CodeIgniter kullanarak bir web sitesi için bir giriş kütüphane geliştirmekteyiz. Aşağıdaki gibi kimlik doğrulama kodu:
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;
}
}
}
Başarı, başarısızlık ya da yasaklanmış simgeleyen dönüş değerleri. Her kullanıcı veritabanında depolanan eşsiz bir tuzu bulunmaktadır.
Originally i grabbed the salt from the database, combined the users inputted password and salt from the database in PHP, then queried the database again with the combined value. I thought that this would speed things up as only one trip to the database is required and there is less code. I also thought that it would be equally secure, however after reading the top reponse to this question http://stackoverflow.com/questions/3273293/salting-my-hashes-with-php-and-mysql ...
First of all, your DBMS (MySQL) does not need to have any support for cryptographic hashes. You can do all of that on the PHP side, and that's also what you should do.
... Ben nokta ihmal etmişti bir güvenlik sorunu olduğunu merak etmeye başladı.
Yanlış bir şey bu kodun gerçekten var mı?