Welcome to da noob!

Welcome to da noob! - PHP - Programmation

Marsh Posté le 29-11-2005 à 14:00:59    

Salut les amis (futurs ennemis :D )
 
voila je me suis mis au php/sql il ya bientot 2 mois de cela. N'ayant jamais programmé et ne voulons pas limité ma connaissance en création de site à des programmes tels que dreamweaver ou flash.. je me suis lancé dans l'aventure php/sql pour créer un site avec base de donnée dynamique..
jusque là tout va bien, la plupars de mes déboires ayants étés contrés! :D  
 
mais la depuis 2 semaines je bloque.. oui je suis pas trop bête pourtant mais je reste complétement bloqué sur une histoire de SECURITE..
 
hé oui, c'est sérieux cette histoire de base de donnée, comme dit le vieu bercerker.. je veux pas que n'importe quel naab vienne pourrir le fruit de mon travail.. en envoyant des requetes insidieuses dans les fenetres de recherche, en utilisant les cookies pour se connecter apres un utilisateur loggé, en copier/coller d'une url loguée, bref foutre la m$^ù$ dans ma base de donnée avec un DROP TABLE par exemple..
 
c'est pourquoi.. dieu créa la femme.. euh non.. le javascript.. et ses formulaires a la cù$ .. bon je me propose de vous montrer ou j'en suis pour y voir plus clair.. :(   :
 
1- page de log:

Code :
  1. <?php
  2.      // Raccourcis
  3. $name=$_POST[ 'name' ];
  4. $password=$_POST[ 'password' ];
  5. if (!isset($_POST['name'])&&!isset($_POST['password']))
  6. {
  7.     // Les visiteurs doivent entrer un password
  8. ?>
  9. <html>
  10.    <head> <p align="center"><img src="logo.jpg" width="408" height="96" /></p>
  11.       <title>
  12.          Merci de vous enregistrer
  13.       </title>
  14.       <script language="javascript">
  15.       function envoyer(){
  16.  if {(document.monform.name.value!="" &&document.monform.password.value!=""
  17.   document.monform.action = "logclient.php"
  18.   document.monform.submit())};
  19.     else {
  20.    alert("Saisissez vos identifiants" )
  21.   }
  22. }
  23. </script>
  24.    </head>
  25.    <body> <body background="fonduni2.jpg" text="#FFFF00" link="#0000ff" vlink="#800080" alink="#ff0000">
  26.     <h1>Le contenu de ce site n'est accessible qu'après enregistrement de votre part.<h1>
  27.     <form method="post" action="javascript:envoyer()" name="monform">
  28.     <table border="1">
  29.     <tr>
  30.       <th> Login </th>
  31.       <td> <input name="name" type=text> </td>
  32.     </tr>
  33.     <tr>
  34.       <th> Password </th>
  35.       <td> <input name="password" type=password> </td>
  36.     </tr>
  37.     <tr>
  38.       <td colspan="2" align="center">
  39.         <input type="submit" value="Log In">
  40.       </td>
  41.     </tr>
  42.     </table>
  43.     </form>
  44.    </body>
  45. </html>
  46. <?php
  47.   }
  48.   else
  49. ?>


 
 
 
 
 
 
 
 
2- ma page de vérification/validation du log:

Code :
  1. <?
  2.    require_once('Connections/connexiondream.php');
  3.    mysql_select_db($database_connexiondream, $connexiondream);
  4.    session_start();
  5.    $name = $HTTP_POST_VARS[ 'name' ];
  6.    $password = $HTTP_POST_VARS[ 'password' ];
  7.    $sql = "select * from autorized_user where name='$name' and password='$password'";
  8.    $res = mysql_query($sql);
  9.    $nb = mysql_numrows($res);
  10.    if($nb!=0) {
  11.      $row = mysql_fetch_object($res);
  12.   $HTTP_SESSION_VARS['name'] = $row->name;
  13.   $HTTP_SESSION_VARS['password'] = $row->password;
  14.   $HTTP_SESSION_VARS['logclient_ok'] = "oui";
  15.     
  16.  header("location:secretdb.php" );
  17.    }
  18.    else {
  19.   $HTTP_SESSION_VARS['name'] = "";
  20.   $HTTP_SESSION_VARS['password'] = "";
  21.   $HTTP_SESSION_VARS['logclient_ok'] = "non";
  22.  
  23. ?>
  24. <html>
  25. <head><p align="center"><img src="logo.jpg" width="408" height="96" /></p>
  26. <title>Eclairlab - Interface d'Administration</title>
  27. <link rel="stylesheet" type="text/css" href="inclusion/style.css">
  28. </head>
  29. <body> <body background="fonduni2.jpg" text="#FFFF00" link="#0000ff" vlink="#800080" alink="#ff0000">
  30.   <center>
  31.   <table border="0" cellspacing="0" cellpadding="0" bgcolor="#ffffff" width="737" height="100%">
  32.       <tr>
  33.       <td height="100%" align="center" valign="middle">
  34.          <form name="monform" method="post" action="secretdb.php">
  35.          <p><font color="#074A75"><b>Login ou Mot de Passe incorrect !</b></font></p>
  36.          <p><input type="submit" value="Retour"></p>
  37.          </form>
  38.       </td>
  39.    </tr>
  40.   </table>
  41.   </center>
  42. </div>
  43. </body>
  44. </html>
  45. <? } ?>


 
 
 
 
 
 
enfin  
3- la page dans le sous dossier connexion qui va permettre de ne pas afficher les log/pass admin dans la source de mes pages!:

Code :
  1. <?php
  2. # FileName="Connection_php_mysql.htm"
  3. # Type="MYSQL"
  4. # HTTP="true"
  5. $hostname_connexiondream = "localhost";
  6. $database_connexiondream = "auth";
  7. $username_connexiondream = "root";
  8. $password_connexiondream = "test";
  9. $connexiondream = mysql_connect($hostname_connexiondream, $username_connexiondream, $password_connexiondream) or trigger_error(mysql_error(),E_USER_ERROR);
  10. ?>


 
 
bon alors déja je tiens a dire que je suis un semi noob, étant donné que mes pages de recherche et d'entrées sur la base de données fonctionnent :D et les 2 mois depusi lesquels je travail la dessus  :bounce:  
Mais.. je voudrais sécurisé le tout et je susi bloqué, pour ce faire j'ai meme u recours a l'aide d'un ami qui m'a gracieusement donné le plan des 3 fichiers que je viens de vous montrer.. ba oui je pouvais pas inventer cette technique quand meme :D (enfin l'hisoire de javascript et la page 3.. le html et php/sql je comprend a peu pres :lol: )
 
voila mon probleme.. outre ces salopries de undefined index pour :Notice: Undefined index: name in c:\program files\easyphp\www\secretdb.php on line 4
 
Notice: Undefined index: password in c:\program files\easyphp\www\secretdb.php on line 5
 
le isset ne fonctionne pas je m'arrache les cheveux..
 
mon probleme donc est que lorsque j'arrive a passer a la page  2 de vérification du log, il m'affiche que je n'ai pas le bon mot de passe ou utilisateur.. et je ne comprends pas pourquoi.. :cry:  
 
ma base de donées : auth ma table : autorized_user et mes champs :  
- user_id  int(11)     Non    auto_increment              
- name  varchar(20) latin1_swedish_ci   Non                  
- password  varchar(10) latin1_swedish_ci   Non                  
 
bien sur j'utilise easy php 1.8.0.1   oui je sais c'est mieux de tout gérer soit meme mais chaque chose en son temps s'il vous plait.. :D  
 
voila je crois avoir tout dit.. n'y connaissant rien en javascript est encore peu en php je suis bloqué.. malgres les différentes tentatives de changement de syntaxe etc.. :??:  
 
P.S.:merci d'avance et désolé pour ceux que je saoulerai avec mes questions qui peuvent paraitre naabiques au plus haut point.. mais c'est pas faute d'avoir lu vos tutos.. ou au passage celui de bercerk sur la sécurité qui est incompréhensible en matière d'implémentation.. j'ai bien vu qu'il ya v une autre méthode et meilleure que celle que j'utilise d'apres lui mais concrétement comment je l'emploi? :D  

Reply

Marsh Posté le 29-11-2005 à 14:00:59   

Reply

Marsh Posté le 29-11-2005 à 14:08:00    

Pas besoin de javascript pour faire ça. En plus c'est pas le js qui va t'aider à sécuriser ton site...
Donc refait tout avec:
- les contrôles du coté serveur,  
- utilises $_POST plutot que  $HTTP_POST_VARS et  $_SESSION plutot que $HTTP_SESSION_VARS
- enleves les bouts de code qui servent à rien  

Code :
  1. $name=$_POST[ 'name' ];
  2. $password=$_POST[ 'password' ];


- et pour le fun crypte le mot de passe en md5


Message édité par anapajari le 29-11-2005 à 14:08:43
Reply

Marsh Posté le 29-11-2005 à 14:10:50    

thx
 
t1 je croyais que c t util c bouts de code la! bref ok je vais tester tout ca

Reply

Marsh Posté le 29-11-2005 à 14:16:45    

oui donc quand tu dis.. : "les contrôles du coté serveur"
 
tu veux dire quoi? (noob spotted) :??:  :D

Reply

Marsh Posté le 29-11-2005 à 14:32:16    

Ton javascript sert à vérifier que login/pass ne sont pas vide.
Tu vires ton js et c'est dans ton php que tu fais ce controle.
En cas d'erreur, plutot que de faire un alert, tu affiches une page d'erreur!

Reply

Marsh Posté le 29-11-2005 à 15:13:02    

ne stocke pas le password mais sa clée de hash plutot et compare ca (google MD5)

Reply

Marsh Posté le 30-11-2005 à 17:04:44    

et controle les données passées en $_POST et $_GET.
 
surtout ne pas en balancer le contenu dans ta requete.
 
commence par un strip_tags($_POST['name'])


---------------
MZP est de retour
Reply

Sujets relatifs:

Leave a Replay

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