|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre expérimenté
![]() ![]() |
Bonjour, je suis nouveau en conception de sites sécurisés et je voudrais avoir un avis d'expert...
Ma page d'accueil est un formulaire demandant login et password. Les login/password valides sont stockés dans une base de donnée et j'ai une fonction php qui vérifie si l'utilisateur a rentré un log/passwd valide. En gros, je me demande si il est possible de cracker mon site facilement ou non ou si c'est carrément impossible... Merci de vos réponses. Encore merci ps: Quand je dis cracker le site, c'est se faire passer pour quelqu'un d'autre sans posséder le log/pass évidemment |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : avril 2006 Messages : 922 ![]() |
Bonjour,
Tu utilises POST pour envoyer les infos, mais les infos sont envoyées en clair. Il me semble qu'à part intercepter le login/password pendant le transfert, la sécurité est plutôt bonne. Bon, pour l'améliorer, tu pourrais éventuellement utiliser HTTPS. Celà dit, concernant le code source de la page, j'ai vu que tu as de l'HTML avant la balise <html> marquant le début de la page...
__________________
[alkama] quelqu'un est allé voir la guerre des mondes? [@Chrisman] j'espère pour spielberg --- bashfr.org |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 1 249 ![]() |
Peux-tu poster le code du script d'authentification ?
|
|
|
00
|
|
|
#4 |
|
Membre régulier
![]() |
Bonjour,
je ne sais pas si cela peut aussi vous intéresser mais avec un aspirateur de site, on peut quand même voir la page protéger. Donc en utilisant le https, ça pourrait résoudre le problème comme dit plus haut. |
|
|
00
|
|
|
#5 |
|
Membre expérimenté
![]() ![]() |
L'authentification se fait sur deux fichiers.
1) echo " <html> <head> <title>Formulaire d'identification</title> </head> "; setDebutZonePos("absolute", 100, 250); echo " <form action=\"XXXXX.php?saisie=$saisie\" method=\"post\"> login : <input type=\"text\" name=\"login\"> <br /> mot de passe : <input type=\"password\" name=\"pwd\"><br /> <br><input type=\"submit\" value=\"Connexion\"> </form> "; setFinZonePos(); echo " </body> </html> "; 2) if (isset($_POST['login']) && isset($_POST['pwd'])) { // on vérifie les informations du formulaire, à savoir si le pseudo saisi est bien un pseudo autorisé, de même pour le mot de passe $dir = goodLogBDD($_POST['login'], $_POST['pwd']); if ($dir != "") //$login_valide == $_POST['login'] && $pwd_valide == $_POST['pwd']) { // on redirige notre visiteur vers une page de notre section membre $_SESSION['login'] = $_POST['login']; if ($saisieLog == 1) { echo " <script language=\"JavaScript\"> document.location = \"variables.php?page=".$_SESSION['page']."&feuille=1\" </script> "; } else { echo " <script language=\"JavaScript\"> document.location = \"variables.php?page=1\" </script> "; } //header ('location: variables.php?page=1'); } else { // Le visiteur n'a pas été reconnu comme étant membre de notre site. On utilise alors un petit javascript lui signalant ce fait echo '<body onLoad="alert(\'Membre non reconnu ...\')">'; // puis on le redirige vers la page d'accueil echo '<meta http-equiv="refresh" content="0;URL=index.php">'; } } else { echo 'Les variables du formulaire ne sont pas déclarées.'; } Voilà, une autre question , c'est facile pour un hacker d'attendre que qqun se log pour intercepter les POST ??? |
|
|
00
|
|
|
#6 |
|
Membre confirmé
![]() |
Pour cela il faut qu'il soit entre les deux machines...Sinon il ne peut pas intercepter les données...
Ou alors il a placé un bout de soft qui redirige les flux...
__________________
Admin Réseaux & Systèmes. Red Hat Certified Technician...#604006101698235 |
|
|
00
|
|
|
#7 |
|
Membre chevronné
![]() |
Pour y voir plus clair dans ton code, place des ' dans les echo au lieu de \". Dans ton exemple le code est court, mais pour des gros projets, il est bien plus pratique et cela fait un seul caractère au lieu de deux.
|
|
|
00
|
|
|
#8 | |
|
Inscrit
Inscription : juin 2006 Messages : 531 ![]() |
Citation:
Sinon c'est complètement artificiel comme formulaire d'identification. |
|
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 1 249 ![]() |
C'est la fonction goodLogBDD() qu'il faut que tu postes pour qu'on te dise si ton script est sécurisé.
|
|
|
00
|
|
|
#10 |
|
Membre expérimenté
![]() ![]() |
function openBDD()
{ global $BDD; // === CONNEXION A LA BD === // connexion mysql_connect($BDD[0], $BDD[1], $BDD[2]); mysql_select_db($BDD[3]); } function goodLogBDD($log, $pass) { global $BDD; openBDD(); // Requête de sélection des messages $SQL = "SELECT * FROM " . $BDD[4] . " WHERE nom=\"" . $log . "\" LIMIT 0, 30"; $res = mysql_query($SQL); $val = mysql_fetch_array($res); $prenom=$val["prenom"]; closeBDD(); if ($prenom === $pass) return "OK"; return ""; } Alors j'ai mes paramètres de bdd déclarés en variables globales, est-ce dangereux? QQun peut-il trouver quel est le nom de mes variables globales et les récupérer et ainsi accéder à la BDD et avoir les log et pass de mes clients??? Merci de vos réponses... |
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 1 249 ![]() |
Tu ne valides pas tes POST avant la requête SQL. Tu risques une injection SQL.
Ici, ça ne paraît pas très dangereux, mais par principe tu devrais systématiquement passer tes données utilisateur par mysql_real_escape_string() avant de faire une requête. |
|
|
00
|
|
|
#12 |
|
Membre expérimenté
![]() ![]() |
Euh... Tu peux préciser un peu cette fonction sql ?? car je n'ai pas bien saisi...
Merci |
|
|
00
|
|
|
#13 | |
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 1 249 ![]() |
Citation:
En gros, mysql_real_escape_string() échappe tous les caractères dangereux permettant notamment les injections SQL. Pour ton code, cela reviendrait à écrire : Code :
$SQL = 'SELECT nom, prenom FROM ' . $BDD[4] . ' WHERE nom="' . mysql_real_escape_string($log) . '"'; |
|
|
|
00
|
|
|
#14 |
|
Membre expérimenté
![]() ![]() |
OK, merci pour l'info, et sinon vg33, que penses tu de mon code au niveau sécurité ?? dois-je utiliser le chiffrage md5 ou autre cryptage ou est-ce que ca suffit ?
Merci |
|
|
00
|
|
|
#15 | |
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 1 249 ![]() |
Citation:
En quelques mots : 1) Le hashage (md5, sha1...) de mdp côté client est une bonne solution pour éviter le shiffing, à condition d'utiliser un grain de sel. 2) Le hashage des mdp en bdd interdit à l'admin de se connecter avec l'id d'un membre, ce qui est une bonne chose. 3) Une sécurité réelle (et encore) ne peut exister dans utiliser HTTPS/SSL/SSH... Conclusion : à toi d'adapter ta sécurité au niveau de confidentialité que tu dois respecter... |
|
|
|
00
|
|
|
#16 | |
|
Membre confirmé
![]() Inscription : décembre 2004 Messages : 343 ![]() |
Citation:
__________________
Cliquez sur ![]() Evitez de mettre Probleme dans les titres de vos posts |
|
|
|
00
|
|
|
#17 |
|
Membre expérimenté
![]() ![]() |
dis moi nehus, tu as testé ca quand??? car je viens de tester et je n'ai pas ton msg d'erreur, peux-tu me donner ton OS et explorer (IE, firefox...)
Merci |
|
|
00
|
|
|
#18 | |
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 1 249 ![]() |
Citation:
|
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com