On Sun 18 Apr 2010 01:01 +0200, Linas wrote:
> Arch User Repository (AUR) wrote:
> > The following task has a new comment added:
> >
> > FS#17109 - AUR passwords are not salted
> > User who did this - Loui Chang (louipc)
> >
> > ----------
> > A patch has been committed to git which will salt the passwords.
> > ----------
> >
> > More information can be found at the following URL:
> > http://bugs.archlinux.org/task/17109#comment60615
> 
> These are good news, however, I don't think it is as good as "it would be":
> 
> > # get salt for this user
> >  $salt = get_salt($userID);
> >  if ($salt) {
> >   # use salt
> > ...
> >  $passwd_result = mysql_fetch_row(db_query($passwd_q, $dbh));
> > } else {
> > ...
> >  $nosalt_result = mysql_fetch_row(db_query($nosalt_q, $dbh));
> > }
> 
> 
> This gratuitously changes one sql query for login to three.
> 
> It could be done as:
> "SELECT ID,Passwd,Salt FROM Users" .+ " WHERE ID = '$userID'";
> $result = mysql_fetch_row(....)
> if ($result[0]) { return false; } //No such user
> if ( salted_hash($passwd, $result[2]) == $result[1] ) { return true; }
> if ( is_null($result[2]) && (md5($passwd) == $result[1]) { update hash;
> return true; }
> 
> 
> Since it already encapsulates the salting into a function, it would be
> trivial to allow the
> salting compatible with already stored passwords, so they can be updated
> with a script:
> 
> function salted_hash($passwd, $salt)
> {
>  if (strlen($salt) != 32) {
>  trigger_error('Salt does not look like an md5 hash', E_USER_WARNING);
> }
>  return md5($salt . md5($passwd));
> }
> 
> Finally, generate_salt() would be safer using mt_rand() instead of rand().

Thank you for your suggestions. These are things that are best discussed
on the aur-dev mailing list.

Seems like you've put some thought into this. Why don't you submit a
patch?

Reply via email to