Meilleure solution sécurité pour site web PHP/Mysql

Meilleure solution sécurité pour site web PHP/Mysql - PHP - Programmation

Marsh Posté le 17-06-2009 à 17:04:56    

Bonjour tout le monde,
 
Je me demandais quel est le meilleur moyen pour sécuriser un site web PHP/MYSQL qui contiendrai un espace
de stockages pour des documents administratifs. La sécurité est primmordiale pour ce site et je
suis novice.
 Aupravant la solution que j'ai utilisé pour un autre projet c'est enregistrement du user/pass dans le SGBD cryptage  
md5 du pass avec la fonction PHP. Je sais pas si c'est suffisant ? Comment peut-on encore améliorer la sécurité ?
 
Merci d'avance.

Reply

Marsh Posté le 17-06-2009 à 17:04:56   

Reply

Marsh Posté le 17-06-2009 à 17:13:00    

cilies1 a écrit :

Bonjour tout le monde,
 
Je me demandais quel est le meilleur moyen pour sécuriser un site web PHP/MYSQL qui contiendrai un espace
de stockages pour des documents administratifs. La sécurité est primmordiale pour ce site et je
suis novice.
 Aupravant la solution que j'ai utilisé pour un autre projet c'est enregistrement du user/pass dans le SGBD cryptage  
md5 du pass avec la fonction PHP. Je sais pas si c'est suffisant ? Comment peut-on encore améliorer la sécurité ?
 
Merci d'avance.


Salut
 
Le meilleur moyen pour sécuriser un site, c'est de ne pas l'ouvrir au public :D (le garder uniquement en intranet)
 
Sinon pour répondre plus sérieusement à la question, la solution dont tu parles (login/password dans une bdd avec md5 pour encrypter) a le mérite de fonctionner, mais ça fait longtemps qu'on utilise l'algorithme md5, il commence à montrer des signes de faiblesse. Tu peux utiliser plutôt sha1 par exemple, tout en convervant le même principe. La doc pour cette fonction : http://php.net/sha1
 
Sinon tu as une technique beaucoup plus simple qui consiste à créer un mot de passe avec htpasswd et restreindre l'accès à l'aide d'un fichier .htaccess (exemple ici : http://www.vulgarisation-informatique.com/htpasswd.php)
 
Bon courage

Reply

Marsh Posté le 17-06-2009 à 17:20:40    

Merci pour la réponse.
Donc d'après toi la solution sha1 est sécuritaire.
Le problème pour htpasswd je ne vois comment ca fonctionne pour tous les utilisateurs qui vont utiliser le service.

Reply

Marsh Posté le 17-06-2009 à 17:40:18    

Pour le htpasswd, l'idée dans ce que je proposais est plutôt de sécuriser tout ou partie d'un site, au moyen d'un ou plusieurs mots de passes qui ne bougent pas sur la volonté des utilisateurs, mais plutôt du webmaster.  
 
Bien entendu, il est techniquement possible de rendre modifiables ces mots de passe mais c'est la galère comparé à un système géré en base de données.
 
La solution sha1 me semble satisfaisante pour crypter des mots de passe. C'est donc vers cette solution que je te conseille de t'orienter.

Reply

Marsh Posté le 17-06-2009 à 19:04:18    

Sha1 est plus sécuritaire que md5 (pas mal de sites proposent de retrouver les mots de passes à partir de leur hash md5 au moyen de rainbow tables.)
Au passage, petite confusion deupsi, il s'agit ici de hashage et pas de chiffrement ;).

Reply

Marsh Posté le 17-06-2009 à 19:59:56    

Merci. Je vais m'orienter vers Sha1 s'il est plus sécuritaire alors.

Reply

Marsh Posté le 17-06-2009 à 20:10:08    

t'as intérêt aussi à verrouiller le dossier qui contient tes docs, de façon à ce qu'un gars "qui connait" ne puisse pas filer l'URL à un autre.


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 18-06-2009 à 12:24:17    

Bonjour encore une question.
Dans le cahier des charge il est mentionné un certificat SSL est préférable. Pouvez-vous me renseigner dessus ?
Comment je verrouille le dossier ?
Merci.

Reply

Marsh Posté le 18-06-2009 à 13:07:24    

pour verrouiller le dossier :
 
- ne faire aucun lien direct vers le fichier, mais un lien du type download.php?file=15 (un id, une référence, peu importe)
 
- si tu veux faire un peu plus, tu peux renommer le dossier à intervalles réguliers. c'est ce que j'ai fait dans un truc que j'ai dév une fois.
 
pour SSL : il faut acheter un certificat et l'importer, selon ton environnement, c'est un peu différent (IIS pour serveur Windows). ton hébergeur doit avoir de la doc là dessus, en tous cas OVH en a.
 
Et ça te permet d'avoir une adresse https://


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 18-06-2009 à 13:55:26    

pour ma part utiliser sha1 au lieu de MD5 améliore de 1% ta sécurité... Il faut déjà qu'une personne sniffe le réseau, puis utilise des rainbows tables pour découvrir le mot de passe. Il faut donc un accès physique. Tu ferais mieux de faire auditer ton code pour éviter les failles d'includes / injection SQL.


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 18-06-2009 à 13:55:26   

Reply

Marsh Posté le 18-06-2009 à 15:08:20    

Merci. Pour le certificat il faut voir avec l'hébergeur alors.
Sinon j'ai un article pour ce genre de faille de séucrité (injection et autre).

Reply

Marsh Posté le 18-06-2009 à 17:08:14    

jagstang a écrit :

pour ma part utiliser sha1 au lieu de MD5 améliore de 1% ta sécurité... Il faut déjà qu'une personne sniffe le réseau, puis utilise des rainbows tables pour découvrir le mot de passe. Il faut donc un accès physique. Tu ferais mieux de faire auditer ton code pour éviter les failles d'includes / injection SQL.


j'ai essayé de trouver la correspondance avec une liste de mots de passes et il y avait pas mal de résultats ! Donc mieux vaut utiliser sha1 amha.

Message cité 1 fois
Message édité par Profil supprimé le 18-06-2009 à 17:08:23
Reply

Marsh Posté le 19-06-2009 à 11:07:22    

certes, mais cela est dû à la popularité de md5 et non à sa faiblesse point de vue technique.


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 19-06-2009 à 11:36:33    

 

j'ai pas compris ce que tu voulais dire... tu as cherché a partir d'une empreinte md5 à trouver un message correspondant?

 
jagstang a écrit :

certes, mais cela est dû à la popularité de md5 et non à sa faiblesse point de vue technique.

 

ben disons qu'avec les puissance de calcul d'auj, avec ma machine perso et un soft trouvé sur le net qui exploite en parallèle les 4 core de mon cpu + mon gpu (pas des plus puissants, mais Q6600 + GForce 9500 qd même), ca teste près de 200 millions de possibilités par seconde. c'est à dire qu'il faut de l'ordre d'une journée pour casser un pwd de longueur inférieur ou égale à 8 caractères...

 

mais je suis pas sur que le sha-1 soit bcp plus armé contre ca... il faut sans doute soit passé au sha-256 ou sha-512, ou alors comme certains l'ont dit, faire une empreinte md5 du pwd, puis une empreinte sha-1 de l'empreinte. ou même une double empreinte md5 : pour trouver la première, il faut déja passer tous les messages de taille 32 (3.44*10^38 possibilités, même à 1milliard d'empreintes testées par secondes, ca fait de l'ordre de 10^21 siècles... on en est pas la. ^^)

Message cité 1 fois
Message édité par pataluc le 19-06-2009 à 11:37:02
Reply

Marsh Posté le 19-06-2009 à 11:46:37    

non il a utilisé un site qui recences les tuples mot / empreintes. d'où ma remarque.


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 19-06-2009 à 11:47:44    

pataluc a écrit :


 
j'ai pas compris ce que tu voulais dire... tu as cherché a partir d'une empreinte md5 à trouver un message correspondant?
 


 

pataluc a écrit :


 
ben disons qu'avec les puissance de calcul d'auj, avec ma machine perso et un soft trouvé sur le net qui exploite en parallèle les 4 core de mon cpu + mon gpu (pas des plus puissants, mais Q6600 + GForce 9500 qd même), ca teste près de 200 millions de possibilités par seconde. c'est à dire qu'il faut de l'ordre d'une journée pour casser un pwd de longueur inférieur ou égale à 8 caractères...
 
mais je suis pas sur que le sha-1 soit bcp plus armé contre ca... il faut sans doute soit passé au sha-256 ou sha-512, ou alors comme certains l'ont dit, faire une empreinte md5 du pwd, puis une empreinte sha-1 de l'empreinte. ou même une double empreinte md5 : pour trouver la première, il faut déja passer tous les messages de taille 32 (3.44*10^38 possibilités, même à 1milliard d'empreintes testées par secondes, ca fait de l'ordre de 10^21 siècles... on en est pas la. ^^)


Salut,
Tu parles de brute-forcer un mot de passe à partir de son "hash" (oui oui c'est pas du chiffrement je sais ^^)
Effectivement ça ne soit pas changer grand chose en brute-force
Mais il existe des sites qui référencent des listes de mots de passes courants avec leur hachage correspondant en md5, tu n'as qu'à entrer le hachage et il te sort le mot de passe s'il le connaît.
Je pense que c'est beaucoup plus dur à trouver pour le sha1.
C'est uniquement à ce niveau, à mon sens, que le sha1 a un intérêt par rapport au md5 (j'ai pas exploré les détails techniques de l'un ou l'autre des algos..)
 
Mais bon pour revenir au sujet, en principe les hachages des mots de passe ne sont pas accessibles aux utilisateurs, donc théoriquement aucune chance de les récupérer même s'ils étaient stockés en clair. Histoire d'être un peu sérieux, on met un chiffrage, mais la complexité de l'algo de chiffrage ne sera pas un énorme gage de sécurité.
 
Comme le disait jagstang les efforts pour la sécurité du site doivent plutôt être portés sur les failles type injection, cross-scripting et compagnie.
 
A+

Reply

Marsh Posté le 19-06-2009 à 12:09:51    

ok...  
 
mais si j'en crois ce genre de page: http://www.korben.info/comment-dec [...] n-md5.html
 
les meilleurs listes de tuples en contiennent plusieurs dizaines de millions. c'est à dire rien du tout en comparaison du nb de messages possibles sur 8 caractères:  
 
26 minuscules + 26 maj + 10 chiffre + ~30 caractères spéciaux = environ 100 caractères possibles, sur 8 caractères, ca fait 10^16. donc les rainbow tables en sont encore loin. en supposant bien sur que les gens utilisent des pwd suffisamment longs...

Reply

Marsh Posté le 20-06-2009 à 03:57:26    

cilies1 => En plus du hachage du mot de passe, pense à prévenir les injections SQL. La meilleure solution sont les prepared statement.
 
http://www.siteduzero.com/tutoriel [...] paree.html

Reply

Sujets relatifs:

Leave a Replay

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