Closed pushpinderbagga closed 11 years ago
Sounds good to me.
about 4. being Ion Auth a library to plug inside other projects, providing an Administrative Dashboard could be unwilled. I mean, on one side is good to think about improvements on the other one there is the risk to build up a too rigid structure.
Yea agreed, I think it would be good to make it a separate project that someone could pull down if needed but it would work with Ion Auth out of the box. I've always wanted to create different modules and integrations so this would fit well with that.
Interesting. More suggestions...
Lets discuss more...
On 2. I prefer just having one table for the user data. If you have 2 you are just adding complexity to your DB queries, code, etc. If you really need two separate tables for some reason it would be easy enough to just write custom code that handles this and stores that data separately. You already have a way to add additional fields to your user table easily.
On 3. I think that's a good idea.
On 4. If you decide to do that please make it an option as it would make a lot of tasks harder and more expensive. There wouldn't be an easy way to tell whether a user already exists or to find a user quickly if everything is encrypted.
For the moment - all I can make out if that we can focus on the below points.
If we use HMVC and have to install just a folder - we can also make it as an installer. Like give options on a page and ask the use to submit after selecting those - which on submit makes the necessary tables etc - err - like Wordpress?
I really dont like the idea of an installer, just makes it much more complicated than it needs to be. If you guys want to make one I'll be glad to create a branch for it or link to it in the readme though.
1-3 I'm definitely down for. Let's get rolling!
@benedmunds - any way to send an alert or email to people who are already using Ion-Auth? They could give in more inputs in regard to the changes/improvements they seek.
Also, lets first tackle Brute force attacks. I suggest the below
Track the attempts per IP and not just the username. The attacker could use multiple usernames and as many passwords. To trigger the security the below can be considered
Case 1. (X) failed login attempts per IP Case 2. (Y) failed login attempts per Identity
(X, Y are configurable via config file)
Case 1 should trigger a Ban on the IP and the user to be redirected to a configurable page elsewhere on the server. Atleast for 1 hour.
Case 2 should definitely introduce an incremental Y*(2 second) delay and along with it a Captcha (Delay and Captcha configurable). If more than a particular maximum (configurable) value - should skip to Banning the IP.
Just suggestions - might be too strict or wrong, am more than willing to discuss and learn from the community.
Also I read that xss_clean is weak in Codeigniter - we should introduce a better xss_clean because attackers generally try injection than brute force where possible?
There's not really a way to contact users...
I'm not sure if we should care about IP since you can't really bruteforce effectively if you are constantly changing the username. Thoughts?
I believe attackers take logically generated usernames or dictionary references and random passwords for brute force attacks. With advanced cards - even an amateur hacker can try more than 200,000 attempts per second...
Pretty sure about it...
If we are doing it - then why skip a loophole?
Good point, why not have more security. Let's do it, I would say we add progressive timeouts and after X attempts (configurable) we can lock them out for 24 hours or something like that.
Wow this became a long and interesting thread :)
About Hmvc module I think that being ion_auth also a spark solves all the problems
Personally I think that Ion Auth should just a plain and simple spark without any imterface because I guess that most of its users are developers embedding it in their own projects for which they can surely provide an interface..
About the users table fields probably an orm would do the trick and developers can add all the additional data they want. In this way the basic users table can contain a minimum amount of data (for instance using Contact Engine I don't need to collect any user's data in mysql)
Even if I don't think that an orm is necessary especially considering the cost of the operation I have to say that I recently got used to redbean and I think it's awesome.
I also like the proposal against brute force.
My 2 cents :)
I did put a tiny snippet to cater brute force in my controller - I know its very simple but it can sure be modified etc...
$attempts = $this->example_model->get_attempts($ip);
sleep($attempts*2);
Cheers!
Thanks for sharing!
I also have a suggestion of keys for encryption and decryption...
Lets not just only use a salt but a combination of 3 keys to encrypt and decrypt the password etc... Why not use the password itself as an additional key to encrypt it?
$key = $salt . $password . $environment
Just a thought - it would not affect the user as Ion-Auth would still be easy to implement and simple to use but way more secure!
At some point it's not really making it any more secure. Using a salt and hashing is pretty much just as secure.
If you're worried about security I'd definitely recommend you switch to bcrypt.
Hello Ben
I've been reading a lot and everyone seems to be very happy with Ion Auth's simplicity but wish it had more featured.
Lets discuss features that can be added and collaborate to make Ion Auth the best Authentication Library ever. I suggest the below features
What else? Lets discuss, finalize a few and implement for everyone to use!