2010-10-10 7 views
3

Comment stockez-vous les informations de connexion?Meilleures pratiques pour stocker les informations de connexion Informations

Probablement, stocker l'état enregistré à la session. Et nom d'utilisateur aux cookies. Mais quelles sont les pratiques les plus sûres pour protéger ces informations cruciales, de tomber dans de mauvaises mains.

+0

une base de données? ... –

+0

@Mitch, Ensuite, comment récupérer les informations lors de la prochaine connexion, même l'IP sera probablement changé – Starx

Répondre

2

Ne stockez pas le nom d'utilisateur dans un cookie si vous l'utilisez pour l'identification. Parce que les cookies sont un stockage côté client et peuvent être manipulés. Stockez-le dans la session au lieu d'un stockage côté serveur.

Normalement, lorsque l'authentification a réussi, vous stockez les informations d'identification de l'utilisateur dans la session et transmettez uniquement l'ID de session au client. Avec cela, les informations de l'utilisateur restent protégées du côté serveur.

0

Stockez également le nom d'utilisateur dans une variable de session. Les sessions sont stockées sur le serveur, avec seulement un numéro d'identification dans un cookie.

Si vous devez également protéger le numéro de session, cryptez la connexion HTTP à l'aide de HTTPS/SSL. Cela nécessitera toutefois que vous achetiez un certificat SSL auprès d'un émetteur agréé.

0

Si vous stockez des informations de connexion, vous devez prendre des mesures pour éviter le piratage de session. Stockez l'ID de session dans votre base de données avec des éléments tels que l'IP des utilisateurs et la chaîne useragent du navigateur et vérifiez que les éléments correspondent à chaque fois.

Si vous stockez également des mots de passe, regardez d'abord les hashing - en général avec un peu d'obfuscation de base comme les saler d'abord pour éviter les attaques de tables arc-en-ciel.

0

Stockez l'ID utilisateur dans une variable de session; Si vous avez besoin de mettre en cache des éléments tels que le niveau d'autorisation, stockez-le également. Stockez l'identifiant de session dans un cookie; utilisez HttpOnly. Si la sécurité/confidentialité est très importante, utilisez SSL pour tout (et utilisez un cookie SSL seulement, regardez aussi l'en-tête Strict-Transport-Security, qui sera bientôt utilisable dans Firefox). Sinon, il est préférable d'envoyer au moins la connexion via SSL. (Malheureusement, SSL nécessite un certificat d'un fournisseur approuvé par les navigateurs grand public, ce qui peut être coûteux à obtenir.) Assurez-vous qu'une nouvelle session est démarrée lors de la connexion pour éviter session fixation. Utilisez un hachage salé pour stocker les mots de passe; de préférence quelque chose de lent comme Blowfish, ou SHA-256 répété quelques milliers de fois. (Si vous avez besoin que votre code soit extrêmement portable ou fonctionne sur d'anciennes versions de PHP, MD5/SHA1 convient aussi, mais il fera que les gens ignorants se plaignent que vous utilisez un hash qui a été "cassé".)

+0

"ou SHA-256 répété quelques milliers de fois." N'est-ce pas une mauvaise pratique de faire du hachage répété? –

+0

@NidhinDavid C'est certainement une meilleure pratique que de ne pas faire de hachage répété :-) Il est certainement préférable d'utiliser HMAC, ou quelque chose créé spécifiquement pour le stockage de mot de passe (comme bcrypt ou scrypt) mais un hachage SHA itéré n'a pas de vulnérabilités pratiques. itéré on en a plutôt les plus flagrants. – Tgr

Questions connexes