2010-02-26 2 views
1

Il y a quelque temps, j'ai créé ce site web basé sur LAMP. À l'époque, j'ai écrit mon propre système de contrôle d'accès et d'authentification des utilisateurs. Il vérifie si l'utilisateur s'est connecté avec un mot de passe correct et s'il a ou non le bon niveau d'autorisation pour accéder à la page donnée. Les informations d'état sont gérées via des sessions PHP tandis que les noms d'utilisateur, les mots de passe hachés, les mots de passe hachés et le niveau utilisateur sont stockés dans un backend MySQL. Toutes les entrées utilisateur sont nettoyées et etc. Les utilisateurs doivent accéder au site avec SSL. Le problème est que je commence à deviner moi-même et devient de plus en plus paranoïaque à propos de la sécurité. Donc, je cherche des moyens de l'améliorer.Authentification/Contrôle d'accès en PHP

Pouvez-vous me donner des suggestions pour:

  • des listes complètes des tests de sécurité, je pourrais mettre en œuvre et exécuter contre elle
  • les meilleures pratiques pour la mise en œuvre de ce genre de système

Y at-il un un framework open source robuste ou un jeu de bibliothèques que vous pourriez utiliser à la place? La sagesse conventionnelle est qu'il est généralement préférable d'adopter un système mature, testé que d'écrire le vôtre à partir de zéro. Que recommanderais-tu?

Répondre

3

1) Puisque vous avez déjà écrit les vôtres vous-même, je ne perdrais pas votre temps et vos efforts pour intégrer un nouveau framework open source externe. Le code écrit par d'autres peut ne pas être nécessaire mieux que le vôtre, de plus vous pourriez ne pas comprendre complètement comment l'intégrer correctement, vous pourriez ajouter encore plus de trous de sécurité à votre application.

2) Ceci est un bon et court guide de 3 pages (malheureusement, il est en italien, mais vous pouvez utiliser la barre d'outils traducteur Google pour traduire toutes les pages) Quoi qu'il en soit, vous ne semblez pas être un programmation PHP, je recommande:

  • désinfectante entrée (mais vous avez dit que vous avez fait)
  • utilisant au moins addslshes (ou mysql_real_escape_string) lors de la lecture avec la configuration php.ini DB
  • register_globals doit être désactivée
  • voiture eful sur la façon dont vous définissez le ERROR_REPORTING, il peut afficher des données privées lorsqu'il rencontre une erreur
+0

Pourriez-vous développer plus sur 'REGISTER_GLOBALS'? Je suis intéressé par ce qu'il fait et comment il peut compromettre la sécurité. – casraf

+0

Lisez ici: http://php.net/manual/en/security.globals.php :) Par conséquent, il était obsolète depuis la version 5.3.0, mais il ne sera pas supprimé avant la version 6.0, de sorte que de nombreux serveurs Web peuvent l'avoir défini à On par deafault. –

+0

Merci :) Je devrais utiliser cette astuce moi-même – casraf

1

Le framework Zend est doté d'une authentification, même si Zend a tendance à être un peu gonflé. Il est possible d'utiliser seulement des morceaux de Zend mais je n'ai jamais essayé d'utiliser seulement le bit d'authentification.

Il y a aussi deux bibliothèques d'authentification dans PEAR - PEAR :: Auth qui est dans une version stable et PEAR :: LiveUser qui est en version bêta et a été libéré dernière (comme beta) en 2008.

I J'espère que cela vous donne un bon départ.