Concorda / concorda-server

MIT License
8 stars 2 forks source link

Security checklist.. #61

Open dberesford opened 8 years ago

dberesford commented 8 years ago

Some overlap with #48 but want to be sure we support this:

AdrianRossouw commented 8 years ago

From the v2 roadmap in #58 ...

logs

settings

session

data validation

Error handling

Misc

AdrianRossouw commented 8 years ago

From those, the biggest missing feature is that it doesn't support account lockout at the moment.

The next biggest warning sign is forcing password changes every N days, which could imply keeping track of the previous password.

But more than that, when taken with the configurable salt + iteration count, it could mean we need to keep track of when passwords were created, and the previous iteration count.

mirceaalexandru commented 8 years ago

We might need to overwrite some seneca actions from seneca-user. Right now the implementation of seneca-user is using the iteration count from seneca-user's options:

https://github.com/senecajs/seneca-user/blob/master/user.js#L381

On the other hand we can change the seneca-user implementation to allow specifying on change_password and register user a specific rounds value - but as you said, this should then be saved in the user entity - and make sure is not reported externally, when the retrieve user action is executed.

mirceaalexandru commented 8 years ago

Another thing about:

is that in the current implementation the iteration count cannot be changed during the lifespan of the application, as if we are changing it, the existing users will not be able to login anymore until they will reset their passwords. So we should save the iteration count in the user entity.