Authenfication

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Authenfication

par pjl » 06 déc. 2005, 18:20

Ca, c'est du classique mais il y a pire.

Avec ce script, on peut se loguer avec le login de x et le password de y.

par zeus » 06 déc. 2005, 17:03

pas seulement.

Vu que tu n'utilise pas $_POST, il suffit au visiteur de rajouter ?login=maval pour emuler l'autentification

deplus, si il lui passe l'idée de mettre la valeur encodée pour url de toto' AND 1=1, ta requete sera

Code : Tout sélectionner

SELECT count(*) FROM authentification where login='toto' AND 1=1
et retournera toujours au moins une ligne

par betman » 06 déc. 2005, 16:48

Apparemment il est possible en tapant l'url dans le navigateur de passer outre l'identification.

par pjl » 06 déc. 2005, 13:05

Merci pour vos réponses, je vais chercher un tuto pour me faire une petite authentification qui va bien :)

++
J'espère que tu as vu let compris le trou de sécurité de ton script avant.

par zeus » 06 déc. 2005, 12:58

Tu ne parles pas de sécurité et pourtant...............
Il y a un énorme trou de sécurité dans ton script.
C'est vrai que je n'ai pas regardé le script SQL :oops:

par betman » 06 déc. 2005, 12:51

Merci pour vos réponses, je vais chercher un tuto pour me faire une petite authentification qui va bien :)

++

par pjl » 06 déc. 2005, 11:02

Tu ne parles pas de sécurité et pourtant...............
Il y a un énorme trou de sécurité dans ton script.

par zeus » 06 déc. 2005, 10:49

Et je ne voit pas de connexion mysql :o
include('connection.inc.php');
;)

par Tonio 76 » 05 déc. 2005, 18:39

Et je ne voit pas de connexion mysql :o

par zeus » 05 déc. 2005, 17:29

ton script est obsolète dans le sens où tu ne récupère pas tes variables issues des formulaires ou des sessions.

une directive du php.ini (register_global) permettait auparavent de récupérer $_POST["nom"] directement dans $nom

désormais, pour assurer une portabilité sur la majorité des serveurs, il fait utiliser $_POST ou $_GET pour récupérer des valeurs provennant d'un formulaire et il faut utiliser $_SESSION pour récupérer une variable de session

Authenfication

par betman » 05 déc. 2005, 17:21

Bonjour à tous,

J'ai ressorti un vieu bout de code... pour permettre l'authentification par login et mdp au back office de mon intranet. J'essai en vain de le faire fonctionner et un amis me dis qu'il n'est pas compatible avec php 4 et 5

voici le formulaire :
<html>
<head>
<link href="../stylesheet/global.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
-->
</style>
<title>Authentification - Intranoo - Club 14</title><body>
<table border="1"width="600" align="center">
  <tr>
    <td><div align="center" class="texte_gras">Club 14- Administration - Identification</div></td>
  </tr>
</table>
<form action="authentification.php" method="post">
  <table width="80%" border="0" cellspacing="0" cellpadding="0" align="center">
    <tr>
      <td colspan="3"><div align="center"><br>
          <br>
          <span class="texte">Partie réservée à l’administration du site. <br>
          <br>
          Entrez votre identifiant et votre mot de passe pour y accéder.</span> </span><br>
          <br>
          <br>
        </div></td>
    </tr>
    <tr>
      <td width="32%">&nbsp;</td>
      <td width="16%" class="texte_gras">Login :</td>
      <td width="52%"><input type=text name=login size="20">
      </td>
    </tr>
    <tr>
      <td width="32%">&nbsp;</td>
      <td width="16%" class="texte_gras">Mot de passe :</td>
      <td width="52%"><INPUT TYPE=PASSWORD NAME=pass size="20">
      </td>
    </tr>
    <tr>
      <td colspan="3"><div align="center"> <br>
          <INPUT TYPE=SUBMIT NAME=SUBMIT VALUE="Accéder au back office">
        </div></td>
    </tr>
  </table>
  <div align="center">
    <?php
if ($Message == "Invalide")
		{
		print ("<B><FONT COLOR=RED>Vous n'etes pas enregistré !</FONT></CENTER></B>\n");
		}
else if ($Message == "Invalide2")
		{
		print ("<B><FONT COLOR=RED>Votre pass n'est pas exact</FONT></CENTER></B>\n");
		}
else if ($Message == "Invalide3")
		{
		print ("<B><FONT COLOR=RED>Votre n'avez pas inscrit de login</FONT></CENTER></B>\n");
		}
		?>
  </div>
</FORM>
</body>
</html>
et le fichier authentification.php
<?php
include('connection.inc.php');

$query="SELECT count(*) FROM authentification where login='$login'";
$result = mysql_query($query);
$row = mysql_fetch_row($result);
$total = $row[0];

	if($login==NULL)
			{
				header ("Location: index.php?Message=Invalide3");

			}



	else if($total != 1)
		{
			header ("Location: index.php?Message=Invalide");

		}

	else
		{
			$query="SELECT count(*) FROM authentification where pass='$pass'";
			$result = mysql_query($query);
			$row = mysql_fetch_row($result);
			$total = $row[0];

				if($total != 1)
				{
							header ("Location: index.php?Message=Invalide2");
				}


				else
				{
							header ("Location: back_office.php");
				}



		}
?>
merci d'avance si vous pouviez me dire si ce code est obsolète (je ne parle pas de sécurité en tant que tel mais d'efficaité)