script login-mot de passe (noob inside)

script login-mot de passe (noob inside) - PHP - Programmation

Marsh Posté le 08-04-2010 à 12:04:50    

Salut

 

Je cherche à rendre une page internet accessible seulement après avoir entré un identifiant et un mot de passe.

 

Je tenais à faire le script moi même alors je n'ai pas regardé de scripts tous faits, du coup comme je débute j'imagine que mon script est perfectible même s'il fonctionne bien, le voici:
(pour l'exemple j'ai choisi comme identifiant "admin" et comme mot de passe "voiture", qui correspondent respectivement aux champs "identifiant" et "pass" du formulaire, si l'identifiant et le pass sont bons, ça redirige vers "maj.php" )

Code :
  1. <?php
  2. if(!$_POST["identifiant"] && !$_POST["pass"]){
  3.     echo "Veuillez remplir les champs s'il vous plait.";
  4. }
  5. elseif(!$_POST["identifiant"]){
  6.     echo "Veuillez entrer votre identifiant s'il vous plaît";
  7. }
  8. elseif(!$_POST["pass"]){
  9.     echo "Veuillez entrer votre mot de passe s'il vous plaît";
  10. }
  11. elseif($_POST["identifiant"]!="admin" || $_POST["pass"]!="voiture" ){
  12.    echo "Vous avez entré un mauvais identifiant et/ou un mauvais mot de passe.";
  13. }
  14. else{
  15.     header("location: maj.php" );
  16. }
  17. ?>
 

Est-ce que ça vous semble protéger la page internet?

 

Autre question: A partir du moment ou une page est nommée en .php, et que le site internet ne contient aucun lien dirigeant vers cette page, excepté via un header dans du code php sous certaines conditions, la page est-elle téléchargeable par les aspirateurs de site?


Message édité par caribouuu le 08-04-2010 à 12:07:59

---------------
Bla (blaa bbla)
Reply

Marsh Posté le 08-04-2010 à 12:04:50   

Reply

Marsh Posté le 08-04-2010 à 12:59:45    

La page ne seras pas "téléchargeable" par HTTP, c'est le rôle de PHP, tu n'en auras que le code que ton PHP retourne/génère... (Sauf si faille de sécurité, mais c'est un domaine qui m'est inconnu).
Ton code ne protège rien dans le sens ou rien n'empêche d'accéder à "maj.php" directement... Je ne pense pas que tu puisses compter sur le fait que personne n'en connaisse l'url où le nom...
Tu peux (en attendant l'avis d'un expert) utiliser une SESSIONS (que tu instancie dans ton else{}) que tu vérifies au sein de maj.php...

 

Sinon, tu peux +ou- mettre le contenu de ton maj.php dans le else, non ?


Message édité par abais le 08-04-2010 à 13:03:24

---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 08-04-2010 à 13:03:12    

oui j'avais pas pensé à l'url, enfin j'avais le pressentiment que c'était trop léger pour vraiment protéger la page sans vraiment savoir pourquoi, merci de ta réponse, je vais apprendre à faire des sessions du coup ;)


---------------
Bla (blaa bbla)
Reply

Marsh Posté le 08-04-2010 à 13:50:18    

  1. <?php
session_start();
$_SESSION['admin'] = 0;  
   2. if(!$_POST["identifiant"] && !$_POST["pass"]){
   3.     echo "Veuillez remplir les champs s'il vous plait.";
   4. }
   5. elseif(!$_POST["identifiant"]){
   6.     echo "Veuillez entrer votre identifiant s'il vous plaît";
   7. }
   8. elseif(!$_POST["pass"]){
   9.     echo "Veuillez entrer votre mot de passe s'il vous plaît";
  10. }
  11. elseif($_POST["identifiant"]!="admin" || $_POST["pass"]!="voiture" ){
  12.    echo "Vous avez entré un mauvais identifiant et/ou un mauvais mot de passe.";
  13. }
  14. else{
$_SESSION['admin'] = 1;  
  15.     header("location: maj.php" );
  16. }
  17. ?>
 
Puis sur ta page map.php tu mets au début de ta page
<?php
session_start();
if ($_SESSION["admin"] != 1){
echo "Interdit !";
exit(0);
}
echo "Autorisé !";
?>

Reply

Marsh Posté le 09-04-2010 à 09:31:19    

2 choses si ton objectif c'est la sécurité
 
1) utilises cette fonction http://php.net/manual/fr/function.htmlentities.php sur tes variables identifiant et pass sinon tu vas être soumis à de l'injection.
2) pas bon de garder le mdp en clair dans le fichier. A la place, calcule la somme MD5 de ton mdp et à chaque envoi du formulaire, calcule la MD5S de la variable pass envoyée et compares les deux.

Reply

Marsh Posté le 09-04-2010 à 11:05:27    

Oui si tu utilises une base de données. Dans le cas ou il garde son script tel qu'il le donne pas besoin de faire tout ça !

Reply

Marsh Posté le 09-04-2010 à 11:07:13    

Puis si son objectif est la sécurité il faut utiliser du SHA et plus du MD5 !

Reply

Marsh Posté le 09-04-2010 à 17:24:40    

aymeric38 a écrit :

Oui si tu utilises une base de données. Dans le cas ou il garde son script tel qu'il le donne pas besoin de faire tout ça !


 
c'est bon à savoir. s'il fait un form plus tard pour créer des utilisateurs, ça lui évitera d'en avoir avec du javascript dans le login. yep pour sha plutot que md5, faut que je perde l'habitude de l'utiliser...

Reply

Sujets relatifs:

Leave a Replay

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