Re: [aur-dev] FS#17109: AUR passwords are not salted
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?
participants (1)
-
Loui Chang