2010-07-23 4 views
1

Disons que j'ai un site Web mysite.com qui va stocker des données personnelles sensibles (liées à la banque) Sur ce site, j'ai une base de données Oracle avec une tables USERS qui va stocker les connexions et les mots de passe des utilisateurs de mysite.comSécurité de l'utilisateur dans la base de données de mon site Web

J'ai quelques questions:

Comment dois-je stocker les mots de passe, le cryptage bien sûr, mais qui?

Quel devrait être le processus d'enregistrement? envoyer un email pour confirmer est vraiment nécessaire?

De bons conseils sur les processus de connexion en général?

Pour plus d'informations, je suis en utilisant Oracle APEX

+0

Il s'agit probablement de la 4e ou 5e question «comment stocker les mots de passe» cette semaine. – rook

Répondre

5

Vous stockez des données personnelles sensibles liées à la banque. Ne piratez pas votre propre solution. Utilisez une solution existante et éprouvée. Très probablement, vous serez également confronté à toutes sortes de lois, règlements et responsabilités en matière de sécurité et de confidentialité lorsque vous traitez de telles données. Trouvez quelqu'un qui connaît ces règlements et qui peut vous aider et vous conseiller.

N'essayez pas de le faire vous-même. "N'importe qui peut construire un système de sécurité qu'il ne peut pas briser lui-même." - Je pense que c'est une citation de Bruce Schneider. Faites attention.

Modifier pour réagir sur le commentaire:

Même lorsqu'ils traitent avec le logiciel de financement privé, vous avez probablement affaire avec des numéros de comptes bancaires, numéros de sécurité sociale, etcetera. Vous êtes donc probablement toujours aux prises avec divers règlements.

Les systèmes comme OpenID et Oracle SSO ne couvrent que l'authentification. Les réglementations imposent également des mesures de sécurité minimales sur la façon dont vous devez stocker les données dans votre base de données, comment traiter les sauvegardes, comment traiter les personnes (par exemple les développeurs) accédant à la base de données, etc., etc. Si vous ne les suivez pas et que quelque chose ne va pas, vous êtes responsable.

Je vous invite vraiment à demander de l'aide à quelqu'un de compétent dans le domaine. Expliquez-leur ce que vous voulez faire, ce que vous voulez stocker, etc. Ils peuvent vous dire quelles sont les réglementations (le cas échéant) qui s'appliquent. Alors seulement, vous pouvez commencer à regarder comment vous allez mettre en œuvre ceci et quels composants disponibles dans le commerce vous pouvez utiliser.

+0

quand je dis sa banque liée, je veux dire comme Mint.com, pas comme HSBC.com. Oracle SSO ou OpenID serait-il suffisamment sécurisé? – guigui42

+0

J'ai modifié ma réponse pour répondre à votre commentaire. –

+0

+1, conseil judicieux. – DCookie

3

En aucun cas, un mot de passe ne doit être crypté. L'utilisation du cryptage implique qu'il existe une fonction de décryptage et que ce serait une violation de CWE-257. Les mots de passe doivent toujours être hachés, et SHA-256 est un excellent choix. Le mot de passe doit être salé avec un cryptographic nonce. Les systèmes d'authentification sont très simplistes en tenant compte des autres systèmes de sécurité sur lesquels vous vous appuyez.

Vous devez être TRÈS PRUDENT pour vous assurer que votre système ne contient pas d'injection SQL. Je recommande d'obtenir une copie de Acunetix ($) NTO Spider ($$$) ou wapiti (open source). En tout cas, les cahiers paramétrés sont la voie à suivre.

0

Les mots de passe doivent être stockés sous forme de hachage salé. Utilisez un sel unique pour chacun. Pour le hachage, il existe de meilleures alternatives, mais SHA1 est correct à plusieurs fins (il est disponible via DBMS_CRYPTO). Encore mieux aller pour SHA256 (en utilisant http://jakub.wartak.pl/blog/?p=124).

La confirmation de l'enregistrement de l'utilisateur dépend vraiment du site. Si vous souhaitez attirer les utilisateurs rapidement, vous pouvez les autoriser après l'enregistrement pour une durée limitée jusqu'à ce qu'ils cliquent sur le lien d'activation. Tout ce que l'activation vous apporte est une véritable adresse email à associer à l'utilisateur. Considérez également captcha pour empêcher l'inscription automatisée/scriptée. La connexion doit appliquer un verrouillage temporaire après certaines tentatives non valides (et des administrateurs d'alerte lorsque des verrous successifs sont atteints). Appliquer une complexité de mot de passe aussi.

OWASP a de très bons conseils généraux pour la conception d'applications web. Wikipedia a des informations sur Oracle Apex Security. Un autre commentaire a suggéré un outil de test web tel que Acunetix ou NTO Spider (je suggérerais plutôt Burp), il existe aussi un outil pour tester la sécurité des applications Apex grâce à l'analyse de la source (ApexSec) - (divulgation, je travaille pour cette société).

Vous pouvez également envisager une vue tierce sur votre application, qu'il s'agisse de tests de pénétration ou de révision de code. Un pare-feu d'application Web peut fournir une certaine valeur en fonction de votre contexte.

Questions connexes