2011-04-23 3 views
3

Je suis nouveau à PHP, j'ai lu beaucoup de tutoriels sur les cookies et sessions, mais je ne comprends pas certaines choses clairement:Quelques questions sur les sessions et les cookies en PHP

  1. Les valeurs de session sont stockés sur le serveur, seul l'identifiant de session est stocké dans l'ordinateur des utilisateurs. Droite? Puis-je créer une session qui n'expire jamais, qui n'est jamais supprimée du serveur et enregistrer l'identifiant de session dans un cookie? Si oui que comment? (Veuillez me fournir un code)

  2. Il n'est pas bon de stocker des données comme des mots de passe dans les cookies parce que les cookies ne sont pas sécurisés? Droite ?

  3. Un pirate peut-il créer un cookie avec un identifiant de session d'un autre utilisateur? Un pirate peut-il deviner l'identifiant d'une session ou pire, la liste avec chaque identifiant de session? Pour un bon système de connexion (utilisé pour les forums ou les sites Web où l'utilisateur possède des données) qui se souvient d'un utilisateur est préférable d'utiliser des cookies, des sessions ou une combinaison des deux avec l'ID de session stockée dans les cookies?

  4. S'il vous plaît me fournir un code sur la façon dont ce que je pourrais l'identifiant de session dans un cookie et que la façon dont je peux accéder à une session si je sais que l'ID de session

Merci!

Répondre

3

Voyons voir ...

  1. droit
  2. session qui n'expire jamais? Pas tout à fait une bonne idée:
    • votre servi serait se rempli de vieux, inutiles, des séances
    • Au lieu de cela, vous devez stocker des données dans un cookie de longue durée; et utiliser ce cookie pour recréer la session (l'utilisateur auto-connexion, par exemple) lorsque l'utilisateur revient plus tard
  3. les cookies ne sont pas sûrs en effet: ils sont stockés en clair, et passent par le réseau non crypté (sauf si vous utilisez HTTS).
  4. Si votre pirate peut obtenir l'identifiant de session d'un autre utilisateur (en lisant ses biscuits, généralement), oui, il peut accéder à sa session de
  5. j'utiliser à la fois: de toute façon, si vous utilisez une session, vous avez besoin d'un manière de stocker son identifiant.
  6. stocke l'ID de session dans un cookie? PHP le fera pour vous, si configuré correctement ;-)
+0

Et si je stocke un mot de passe dans un cookie, mais d'abord je le crypte: – Csabi

+0

avec sha1 (md5 ('mot de passe'))? – Csabi

+0

Ce n'est pas le cryptage, mais le hachage: vous ne pourrez pas obtenir le mot de passe de cette chaîne; mais je suppose que c'est mieux qu'un mot de passe en texte clair –

1
  1. Oui, les sessions PHP sont stockées sur le serveur.
  2. Vous ne voulez pas faire cela. C'est un gaspillage d'espace disque. Non, ce n'est pas bon parce que les cookies sont stockés non cryptés et en clair et vous ne devriez jamais renvoyer un mot de passe en clair à l'utilisateur.
  3. S'il connaît l'identifiant de la session, il pourrait être en mesure de prendre en charge une session (l'association de sessions à l'adresse IP de l'utilisateur contribue à cela). C'est l'une des raisons pour lesquelles XSS est dangereux.
  4. Utilisez une session et stockez l'ID utilisateur dans celle-ci. Il n'est pas nécessaire d'utiliser un cookie séparé si vous avez déjà le cookie sessionid. Utilisez session_set_cookie_params() si vous souhaitez modifier les paramètres de cookie de session; par exemple. pour le rendre permanent.
+0

Merci, mais à la question 6 pouvez-vous s'il vous plaît me donner du code, je ne sais pas quoi faire avec cette fonction ... Pouvez-vous écrire et exemple de code en PHP? – Csabi

+0

# 2. Pour les sessions qui n'expirent jamais, stockez les données de session avec user_id dans la base de données au lieu du système de fichiers du serveur. Basé sur user_id, vous pouvez récupérer les données de session à partir de la base de données. –