in reply to Protecting your DBI user/password in scripts?
while priv_user has read-write access to all tables.users: +----------+----------------+ | username | crypt_pw | +----------+----------------+ | joe | x47s$EWn47#fdb | | jane | p98uyDNR93@$w5 | | ...
Now the trick is in the crypt_pw column. This is not the hash of the users' passwords, as you may expect -- it is instead the result of a symmetric cipher of priv_user's database password, with each user's password as the key. Obviously generating these columns this must be done beforehand or by some otherwise privileged and "safe" script -- otherwise priv_user's password would have to be hard-coded into some script, making it vulnerable to attacks listed above. You get the point.
So the authentication process will look like this:
(*) You can use many methods to achieve step 1. For instance, mod_perl will let you get the password from a HTTP basic authentication request, or you can use a CGI script over SSL, etc. depending on your paranoia level.
Of course, this whole scheme hinges on being able to get 2 DB users, one with with nonstandard permissions -- which isn't always possible at many ISPs. It also makes resetting priv_user's password hard without also resetting the other users' passwords.
Are there any knowledgeable security expert monks out there with critiques of this method? The only hard-coded password would be a "safe" one that is only allows read-only access to a single table. With a strong cipher, you will not be able to determine the password for priv_user without knowing one of the allowed users' passwords. Please share any insights, as my curiosity is piqued by this method.
I hope this helps, and good luck.
blokhead
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: Protecting your DBI user/password in scripts?
by abell (Chaplain) on Sep 13, 2002 at 08:37 UTC | |
by blokhead (Monsignor) on Sep 13, 2002 at 14:47 UTC |