2009-01-14 16 views
6

Je cherche à implémenter la connexion de l'utilisateur sur mon site pour la première fois. Je suis heureux de construire ma propre solution, ou d'implémenter quelque chose d'open source, mais aucun paquet n'a été un choix évident dans ma recherche jusqu'à présent. De même, je suis pleinement conscient qu'en tant que programmeur php intermédiaire au mieux, il est fort probable que je rate quelque chose d'évident si je lance ma propre solution, et laisse les portes ouvertes.autorisation simple/capacité de connexion en php

Des suggestions? Nous ne parlons pas ici de données super sensibles ou de paiement, mais je tiens également à ce que personne ne mette mon site en erreur!

exigences sont - php basées - simple que possible, pas besoin de cloches et de sifflets de fantaisie - pas Zend Framework, depuis que je suis maintenant roulées mes propres frameworkthanks très basiques à this post

Merci pour vos commentaires .

+0

Vous pouvez jeter un oeil à https://github.com/delight-im/PHP-Auth qui est à la fois le cadre agnostique et base de données agnostique. – caw

Répondre

5

Quelques bons de sécurité gotcha sont

  • jamais magasin l'un utilisateur non crypté mot de passe dans la base de données
  • jamais magasin le mot de passe de l'utilisateur ou même un hachage du mot de passe en session ou données de cookie.
  • Si vous devez vous assurer que la connexion est sécurisée, vous devez utiliser https.

J'ai trouvé ces article très utile dans la construction de systèmes de connexion avec les cookies:

+0

+1 Merci, je stockais le mot de passe dans une variable de session sans le dire –

+0

Pourquoi ne pouvez-vous pas stocker un mot de passe sur une SESSION? Je ne vois pas comment c'est insécurisant. –

+1

Je sais que c'est vieux, mais je vais quand même laisser ma réponse. Vous ne pouvez pas laisser le mot de passe en session car dans le cas d'une injection javascript, quelqu'un peut toujours utiliser ce mot de passe. Certains hackers peuvent également voir les en-têtes envoyés au serveur, il est donc facile d'obtenir ce mot de passe. De plus, 99,999% des personnes utilisent ce même nom d'utilisateur et mot de passe pour plusieurs sites. –

3

"Vous mettrez vos yeux sur l'enfant."

La sécurité est difficile. Je déteste dire cela, mais les chances de faire un système d'autorisation simple et sécurisé sont plutôt minces. Il n'y a pas de mode facile ici. Donc, vous pouvez commencer par lire un tas de code d'authentification dans les différents frameworks/cmses, et d'autres endroits où vous pouvez voir comment les autres l'ont fait, et commencer à chercher.

Voici quelques liens: http://www.topmost.se/personal/articles/casual-cryptography-for-web-developers.htm http://pear.php.net/packages.php?catpid=1

-1

Ce n'est pas difficile, et amusant à code, en tant que débutant.

Vous avez besoin d'un endroit pour stocker vos données (disons une base de données mysql).

Vous devez au moins avoir un champ de connexion et un champ de mot de passe. (le mot de passe doit être stocké crypter en utilisant sha1() par exemple).

Maintenant, vous devez afficher un formulaire de connexion. Je suppose que c'est ok pour toi. Que faut-il faire, à chaque fois que nous obtenons le login et le mot de passe?

Interrogez la base de données pour voir s'il y a une correspondance avec login_base == login_form et password_base == sha1 (password_form).

Si oui, vous définissez quelque chose, comme une session par exemple.

Donc sur une page où l'on devrait être connecté, il suffit de vérifier s'il y a un ensemble de sessions.

Ceci est pour la base; alors vous pouvez ajouter quelques niveaux et ainsi de suite.

+3

-1 pour la déclaration ridiculement incorrecte "Ce n'est pas si difficile, et amusant à coder, en tant que débutant." Il y a un million de façons de fausser l'authentification de base, et les débutants de code auth comme les lemmings qui sautent d'une falaise. –

0

je trouve que pour quelques utilisations, construire mon propre utilisant l'authentification http est suffisante. Je recommanderais this comme point de départ.

Puisque vous avez votre propre framework de base, il ne devrait pas être trop difficile d'inclure le code d'authentification dans un endroit commun.

Certains avantages sont

  • Pas beaucoup de code.
  • Ne nécessite pas de cookies ou de réécriture d'URL.

Inconvénients

  • est redimensionnée pas bien au contrôle d'accès plus granulaire.
  • Non facile façon de "se connecter out".

-
BMB