[PHP] Sécuriser son code et restreindre l'accès à des pages

Sécuriser son code et restreindre l'accès à des pages [PHP] - PHP - Programmation

Marsh Posté le 13-02-2009 à 13:52:34    

Salut,
 
Mon niveau en php commence à ne pas être trop mauvais et maintenant je veux progresser sur deux plans:
 
1 - La sécurité de mon code.
Lors d'envoi de données par la méthode GET ou POST, quels sont les vérifications de bases qui doivent être faites?
Y'a t-il un "trou" de sécurité php connu ?  :??:  
Enfin quels sont les risques des sessions et comment sécuriser les sessions?
 
2 - Espace sécurisé
Aujourd'hui pour mes espaces "sécurisés" j'utilise un formulaire d'identification. Le login et le mot de passe sont comparés à ceux présents dans la base "user". Si c'est bon, on affiche, sinon on renvoi à la page d'identification avec un "header()".
Est-ce une bonne méthode, est elle suffisamment sure?
 
Merci de votre aide  :jap:

Reply

Marsh Posté le 13-02-2009 à 13:52:34   

Reply

Marsh Posté le 13-02-2009 à 14:23:08    

Donc tes mots de passes sont en clair ?

Reply

Marsh Posté le 13-02-2009 à 14:33:16    

donc pour les valeurs en $_POST et $_GET => il faut verrifier leur contenu, ex quand tu attends un nombre tu fais par exemple un ctype_digit, si tu attends une string, tu fais des mysql_real_escape_string, tu verrifies que tu n'as pas de balise html malicieuses (<script> ) etc... bref tu blindes un max pour etre sur que les données que tu sauves en bdd (ou ailleurs) sont bien ce que tu veux qu'un email est vraiment un email (avec une expression reguliere)
 
pour les passwords, il est bon de les stocker crypter dans la bdd
si le user a perdu son password, tu en génère un et lui envoi par mail a l'adresse email utilisée pour l'inscription.
Si par hassard tu as une faille qq part, au moins le mechant n'aura pas les passwords en clair


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
Reply

Marsh Posté le 13-02-2009 à 14:36:58    

Il y a pleins de pièges à éviter...
configuration d'apache: vérifier que les fichiers qui doivent être exécutés le sont, vérifier ceux qui peuvent être lus ou pas
Les requêtes GET et POST et les cookies sont en clair, sauf emploi de https. Ne jamais y mettre du code par exemple, uniquement des données dont la format est vérifié.
Le problème avec GET POST et COOKIE est que l'ordre dans lequel ils sont parsés peut être changé de multiples façons et ils peuvent écraser des variables existantes. N'utiliser les variables globales qu'avec parcimonie et les signaler. Vérifier aussi la config php.
L'emploi de sessions avec PHP dès le début est plus simple. Seul un identifiant de session traîne sur le réseau, les variables sont rangées dans un fichier temporaire.
Pour un login totalement sécurisé, il faut mettre la page en https et contrôler la durée des sessions.
Voir les sessions sur PHP.net.

Reply

Marsh Posté le 13-02-2009 à 14:45:13    

Merci pour vos réponses.
 
Les password sont crypter avec la fonction md5() avant d'être stockés dans la base.
Par contre si je veux stocker des mots de passe en clair je fais quoi. Je vous donne un exemple:
 
Je vais devoir utiliser la fonction imap() et je vais avoir besoin du mot de passe de la boite mail. L'idée, c'est que l'utilisateur n'ai pas besoin de saisir son mot de passe.
 
Nargy: tu me parles de la config d'apache, que faut il regarder exactement? Nous avons un serveur dédié donc je peux tout modifier dans la config.

Reply

Marsh Posté le 13-02-2009 à 15:20:29    

aspirateur a écrit :

Les password sont crypter avec la fonction md5() avant d'être stockés dans la base.


Il ne faut plus utiliser md5, c'est mort. Mieux vaut utiliser un salt + sha-256 par exemple


Message édité par FlorentG le 13-02-2009 à 15:20:36
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed