http://www.perlmonks.org?node_id=306612


in reply to Re: Re: Securing Web Apps.
in thread Securing Web Apps.

if your challenge of the day is only changed once per day, once an attacker has sniffed the username and hash, those are all they need to get in for the rest of the day. you can improve it somewhat by including the client's IP address in the hash, but this will cause problems if they're behind a proxy, etc. and it still isn't 100% solid because IP addresses can be spoofed.

the only truly secure way to authenticate over an insecure channel without using encryption is with a zero knowledge proof, but implementing a ZKP is a complex undertaking since it is necessarily interactive and would require sophisticated client-side action. the chances of screwing something up in the implementation and wrecking the security are probably high enough that it's not worth even considering.

if i were you and i were really concerned about security, i would run everything over https and use basic HTTP authentication. it's simple and about as secure and reliable as you're going to get.

also, it sounds like you're storing passwords on the server in some unencrypted form. this is almost always a bad idea.

there's no such thing as perfect security. the best you can do is to make it hard enough to crack that the expense of cracking it would be more than any possible reward that the attacker would get.

Replies are listed 'Best First'.
Re: Re: Re: Re: Securing Web Apps.
by EvdB (Deacon) on Nov 13, 2003 at 09:14 UTC
    I have played with the basic auth method but the thing that puts me off is that there is no clear cut way to log the user out - as far as I can tell the browser stays authed until it quits.

    Am I missing something here?

    My prefered way to auth is to send the user through a login page and then to set a cookie with the user's name and a token on it. This token is something like "ahe67pnjr8" and is selected at random at the login. To confirm the user the token from the cookie is compared to the token in the database.

    This makes logging out easy as all you need to do is change the token in the database and the user's cookie becomes worthless. Can a similar thing be acheived with basic auth without changing the users password?

    --tidiness is the memory loss of environmental mnemonics