views:

59

answers:

3

Lets say i have a website mysite.com that will store some sensitive personal data (bank related) On this website i have an oracle database with a USERS tables that will store the logins and passwords of users from mysite.com

I have a few questions :

How should i store passwords,encryption of course, but which ?

What should be the process for registration ? send an email to confirm is really necessary ?

Any good advices on login processes in general ?

For information, i m using Oracle APEX

+5  A: 

You're storing bank related sensitive personal data. Don't hack your own solution. Use an existing, proven solution. Most likely you will also be running into all kinds of security and privacy laws, regulations and liabilities when dealing with such data. Find someone who knows these regulations and who can help you and advise you.

Don't try to do this yourself. "Anyone can build a security system they they themselves cannot break." - I think that's a Bruce Schneider quote. Heed it.

Edit to react on comment:

Even when dealing with private finance software you're probably dealing with bank account numbers, social security numbers, etcetera. So you are probably still running into various kinds of regulations.

Systems like OpenID and Oracle SSO only cover authentication. Regulations also dictate minimum security measures on how you should store data in your database, how you should treat backups, how you should deal with people (e.g. developers) accessing the database, etcetera, etcetera. If you don't follow these and something goes wrong, you're liable.

I really urge you to seek help from someone knowledgeable in the field. Explain them what you want to do, what you want to store, etcetera. They can tell you what (if any) regulations apply. Only then can you start looking at how you are going to implement this and what off-the-shelf components you can use.

Sander Marechal
when i say its bank related, i mean like Mint.com , not like HSBC.com.Would Oracle SSO or OpenID be secure enough ?
guigui42
I've edited my answer to respond to your comment.
Sander Marechal
+1, sound advice.
DCookie
A: 

Take a look at the answers to this question.

Tony Andrews
+3  A: 

Under no circumstance should a password be encrypted. The use of encryption implies that there is a decryption function and that would be a violation of CWE-257. Passwords must always be hashed, and SHA-256 is an excellent choice. The password should be salted with a cryptographic nonce. Authentication systems are highly simplistic when taking into consideration the other security systems you rely on.

You must be VERY CAREFUL to make sure that your system is free of SQL Injection. I recommend obtaining a copy of Acunetix($) NTO Spider ($$$) or wapiti(open source). In any case parameterized quires is the way to go.

Rook