2010-12-15 123 views
0

Je travaille sur une application ajax en me demandant simplement combien de sessions fiables sont en termes de sécurité. Est-ce que je peux compter sur la session en tant qu'identification d'utilisateur et les laisser changer ils sont le mot de passe sans demander le mot de passe courant?Quelle est la fiabilité de la session en PHP?

Répondre

2
  1. Ne sauvegardez pas les données sensibles dans les sessions. Ils ne sont pas très fiables en termes d '"existence";)
  2. Ne laissez personne changer un mot de passe sans fournir le mot de passe actuel. Imaginez que vous quittiez votre ordinateur et que quelqu'un change le mot de passe "pour vous".
+1

OK, maintenant pourquoi ne devrais-je pas enregistrer les données sensibles en session? –

+0

Les sessions sont généralement enregistrées dans des fichiers texte, de sorte que le processus qui crée les sessions peut lire tous les fichiers. Vous devez prendre soin de vous-même, qu'il n'y a aucun moyen qu'un script, qui s'exécute dans le contexte de votre serveur Web, puisse accéder à tout autre fichier de session que celui de la session en cours. C'est dans la plupart des cas pas si difficile, mais vous n'avez pas besoin d'y penser, si vous n'y mettez pas de données sensibles;) – KingCrunch

+0

Je ne suis pas d'accord avec le point 1 (ne pas enregistrer les données sensibles dans les sessions). Traitez simplement la session comme n'importe quel autre stockage dangereux (comme une base de données). Si vous ne stockez pas de mots de passe en clair (par exemple) dans une base de données, vous devez faire la même chose avec la session. Une session est juste un autre type de stockage (qui a un cycle de vie spécial) – bug

0

Je ne suis pas sûr de ce que vous voulez dire par combien de sessions fiables sont en termes de sécurité. Mais, en ce qui concerne votre autre question, je ne permettrais jamais à un utilisateur de changer son mot de passe sans le mot de passe actuel. La raison est simple: si je m'assois sur un ordinateur avec une session authentifiée, je serai en mesure de changer mot de passe sans réellement posséder ce compte.

0

Les sessions sont stockées côté serveur, elles sont donc aussi sécurisées que possible. Cela dit, il est toujours possible que quelqu'un vole la clé de session unique pour votre site, ce qui lui donnerait un accès complet au compte de l'utilisateur, mais c'est juste le problème avec le stockage côté client.

Vous pourriez faire la deuxième chose, mais vous pourriez toujours le faire même sans session ... donc je ne suis pas sûr de savoir où vous allez avec ça. Mettre dans le mot de passe actuel est juste pour des mesures de sécurité supplémentaires/vérification.

0

La session utilise un cookie. Ce cookie est vulnérable à toutes les attaques à base de cookies. Y compris les attaques de style Firesheep.

Vous pouvez modifier la façon dont les cookies PHP les envoie uniquement via SSL (https). Cela aide, mais n'empêche pas une attaque ayant accès à cette même machine d'avoir accès.

Il est toujours recommandé de se ré-authentifier lors du remplacement du mot de passe. Tout comme vous ne devriez jamais montrer à un utilisateur son numéro de carte de crédit ou SSN.

0

Les mots de passe qui devraient être toujours voir encodées donc je pas pourquoi vous devez stocker dans le mot de passe de session est reqired qu'une seule fois lorsque vous vous connecter à la page puis enregistrez quelques informations en session disant utilisateur est connecté userid peut-être ..