Hmm, interesting. Perhaps I should effectively ban any user who's IP address changes frequently then (by simply not worrying about them. With my system, they'd have to login at each IP change)
The method I'm developing, works as such:
- The user visits the site and logs in
- I record the IP and some other info
- I create a hash that doesn't use the IP and store it in a cookie
- I take the cookie hash, append the ip and hash it again, and store it in the database
- when the user visits a page, the cookie stored hash is run through the server and hashed again with the user's IP
- this is then compared against the db hash, if there's a match, the user is authenticated.
I think I'm also going to implement a table to store (a limited number of) multiple hashes per user, so the user can visit from other IPs without having to relogin.
My method is a little more complex, but this is the gist of it.