Est il securise??

Eléphanteau du PHP | 25 Messages

18 déc. 2006, 00:15

salut,

Je veux savoir si mon domaine d'identification est securise, et pourquoi il n'affiche pas le message "bienvenue $pseudo" il affiche seulement "bienvenue".
<?php
/*
in varchar(20) NOT NULL, // temps de connexion (A)
   out varchar(20) NOT NULL, // temps de deconnexion (B)
   session varchar(20) NOT NULL, // B-A temps passe en une connexion
*/
include ("include_files/config.php");

isset($_POST['date']) ? $date=$_POST['date']:$date='';
isset($_POST['hour']) ? $hour=addslashes(trim($_POST['hour'])):$hour='';
isset($_POST['pseudo']) ? $pseudo=strtolower(addslashes(trim($_POST['pseudo']))):$pseudo='زائر';
isset($_POST['passwd']) ? $passwd=addslashes(trim($_POST['passwd'])):$passwd='';


if ($pseudo == ''){ 
echo $ErrorPseudo1;
echo $ErrorReturn;
}
elseif ($passwd == ''){ 
echo $ErrorPassword1;
echo $ErrorReturn;
}

elseif (strlen($pseudo)<5){ 
echo $ErrorPseudo2;
echo $ErrorReturn;
}

elseif (strlen($passwd)<5){ 
echo $ErrorPassword2;
echo $ErrorReturn;
}

elseif (strrpos($pseudo,' ') > 0){
echo $ErrorPseudo3;
echo $ErrorReturn;
}

elseif (strrpos($passwd,' ') > 0){
echo $ErrorPassword3;
echo $ErrorReturn;
}

elseif(!eregi("^[a-z]+$", $pseudo)){
echo $ErrorPseudo4;
echo $ErrorReturn;
}
/*
elseif (strspn($pseudo,"abcdefghijklmnopqrstuvwxyz0123456789") < 4) {
echo $ErrorPseudo5;
echo $ErrorReturn;
	}
*/
elseif(!eregi("^[a-zA-Z0-9]+$", $passwd)){
echo $ErrorPassword4;
echo $ErrorReturn;
}
else
{
$connection = mysql_connect("$dbhost", "$dblogin", "$dbpassword") or die ($ErrorConnection);
$db = mysql_select_db($db_name, $connection) or die($ErrorDBase);
$sql = "SELECT pseudo FROM $Idara_table WHERE passwd = '". $passwd ."'"; 
$result = mysql_query($sql,$connection) or die ($ErrorSelect);
$num = mysql_num_rows($result); 
if ($num =='1') 
    { 
$pseudo = $_SESSION['pseudo'];

echo 'Bienvenue' .$pseudo;
?>
<a href="page2.php">page2</a>
<?
echo 'vous pouvez se deconnecter [<a href="index.php?rub=Deconnexion" name="logout">ici</a>]';
        }
		}
    else 
    { 
        echo 'desole<br/>'; 
    include ('login_form.php');
	
	mysql_free_result($result);
	mysql_close($result);
}
	?>

merci

ViPHP
ViPHP | 1961 Messages

18 déc. 2006, 00:23

Bonsoir,

Je n'ai pas regardé le code en détail mais j'ai vu l'utilisation de $_SESSION['pseudo'];
parcontre je n'ai pas vu de session_start() ???
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Mammouth du PHP | 19672 Messages

18 déc. 2006, 00:26

Petite précision. Sur un plan théorique, déclarer une variable de session va automatiquement lancer la session. Ça reste théorique et ce n'est pas du tout recommandé.

La possibilité, c'est de mettre le session_start() dans le fichier de configuration qui est inclus dès le départ, il m'arrive de faire ce genre de manip, j'écris le session_start() une seule fois pour toute l'application ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 25 Messages

18 déc. 2006, 00:29

Je l'ai dans index.php:

<? 
session_start();
//inclure les parametres
include ("include_files/config.php"); 
?> 

ViPHP
ViPHP | 1961 Messages

18 déc. 2006, 00:31

Je l'ai dans index.php:

<? 
session_start();
//inclure les parametres
include ("include_files/config.php"); 
?> 
Il faut le faire dans chaque fichier maître
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphanteau du PHP | 25 Messages

18 déc. 2006, 00:35

avec les pseudo frames ca donne les erreurs de session

ViPHP
ViPHP | 1961 Messages

18 déc. 2006, 00:39

Re,

Il faudrait que tu nous donnes un minimum d'infos quand tu postes, on ne peut pas deviner.

Montre globalement ce que tu fais.
Dans la partie du code que tu montres on voie l'utilisation de $_SESSION mais on ne vois pas son initialisation $_SESSION['qq_chose'] = $qq_chose.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphanteau du PHP | 25 Messages

18 déc. 2006, 00:46

$pseudo = $_SESSION['pseudo'];
j'ai fait l'inverse:
$_SESSION['pseudo'] = $pseudo;

ViPHP
ViPHP | 1961 Messages

18 déc. 2006, 00:54

Re,
Et ça donne quoi ?
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

ViPHP
ViPHP | 1961 Messages

18 déc. 2006, 01:16

Re,

Deux petites remarques :
- Tu ne devrais pas utiliser les "short_open_tags" (<?) certains serveurs ne les aceptent pas (et ça devrait être tous).
Utilise <?php

- Concernant ton initialisation de variables.
Ton code
isset($_POST['date']) ? $date=$_POST['date']:$date='';
isset($_POST['hour']) ? $hour=addslashes(trim($_POST['hour'])):$hour='';
isset($_POST['pseudo']) ? $pseudo=strtolower(addslashes(trim($_POST['pseudo']))):$pseudo='زائر';
isset($_POST['passwd']) ? $passwd=addslashes(trim($_POST['passwd'])):$passwd='';
Tu devrais l'écrire comme ceci
$date = isset($_POST['date']) ? $_POST['date']: '';
$hour = isset($_POST['hour']) ? addslashes(trim($_POST['hour'])): '';
$pseudo = isset($_POST['pseudo']) ? strtolower(addslashes(trim($_POST['pseudo']))): 'زائر';
$passwd = isset($_POST['passwd']) ? addslashes(trim($_POST['passwd'])): '';
Pourquoi forcer le pseudo à minuscules ?
Pourquoi interdire l'espace dans le mot de passe?
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein