Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/07/2006, 09h52   #1
Membre du Club
 
Inscription : janvier 2005
Messages : 71
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 71
Points : 52
Points : 52
Par défaut [Sécurité] securité et google barre

Bonjour,

J'ai crée un logiciel de gestion commerciale (devis - factures - gestion des produits ...) en intranet pour une petite structure (env. 10 pers). Il utilisé depuis 6 mois et on viens de me faire remarquer une grosse faille en securité sur un des postes.

Mon problème est le suivant : j'ai un client qui a rajouté un add-on sur google (le google desktop 4.2006.0627.0501-frs-pb) et quand il fait une recherche sur le net google lui ramene les résultats contenus dans l'historique de son poste.

Et là, il a accès au logiciel de gestion commerciale et il arrive a consulter ses pages sans etre déconnecté (il est connecté automatiquement lors de l'ouverture de la page depuis google).

Voici mon code de connexion s'il peut vous etre utile :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
// récupère les valeurs saisises dans les champs de texte
if(isset($_POST['TxtId'])&& isset($_POST['TxtPass']))
{
    if($_POST['TxtId'] != "" AND $_POST['TxtPass'] != "")
   {
         $_SESSION['id'] = $_POST['TxtId'];
         $_SESSION['pass'] = md5($_POST['TxtPass']);
    }
    else{$_SESSION['id'] = "";$_SESSION['pass'] = "";}
}
 
// Vérifie si l'identifiant et le mot de passe sont valides 
$RechAdminConnect = "SELECT id, MDP FROM utilisateur WHERE MotDePasse = '".$_SESSION['pass']."'";
$RechAdminConnect .= "AND Identifiant = '".$_SESSION['id']."' ";
$AdminConnect = mysql_query($RechAdminConnect) or die(mysql_error());
$row_AdminConnect = mysql_fetch_assoc($AdminConnect);
$totalRows_AdminConnect = mysql_num_rows($AdminConnect);
 
// traitement des erreurs

J'aimerais savoir si certains d'entre vous on déjà eu le probleme et si oui comment vous l'avez résolu.

Merci
dinde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2006, 11h00   #2
Membre du Club
 
Inscription : avril 2005
Messages : 50
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 50
Points : 51
Points : 51
Vérifies-tu sur chacune de tes pages que la variable de session contenant ton login/pass est bien valide ?

Il faudrait que tu fasse une page de connexion qui initalise une variable de session avec le login par exemple si l'identification est correcte, et la laisse à vide dans le cas contraire.

Ainsi, en début de chaque page, tu vérifies si la variable de session est remplie ou pas, dans le cas contraire tu affiches un message d'erreur ou une redirection vers la page de login.
turie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2006, 11h11   #3
Membre du Club
 
Inscription : janvier 2005
Messages : 71
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 71
Points : 52
Points : 52
Je verifie les identifiants de session sur chaque page sur chaque page. Le pitit bout de script que j'ai mis est appelé sut toutes les pages.

J'ai remarqué un truc bizzare sur la page que l'utilisateur appelle, la feuille de style n'est pas prise en compte (la feuille de style est appellée en dessous de la verification du login/mdp), alors que si l'utilisateur change de page (ex : clique sur un lien retour, la page de style est prise en compte) et ce sur n'importe quelle page du logiciel.

Une autre chose m'intrigue : l'utilisateur peut avoir accès à ce qu'il a recherché par google (ex : l'utilisateur a cherché 'test' dans les produits, a redémarré son PC -> donc fermé toutes ses pages et ben si il cherche test sous google, l'addone lui donnera une page avec les résultats affichés de sa recherche test sous le logiciel).

Je pense que pour résoudre le probleme se situe au niveau des coockies crée par la session existante, mais je vois pas comment les supprimer.

Cordialement.
dinde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2006, 12h06   #4
Membre du Club
 
Inscription : avril 2005
Messages : 50
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 50
Points : 51
Points : 51
Ton code n'est pas bon.
tu devrais avoir quelque chose de ce style sur la page de connexion :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 if (!isset($_SESSION['login']))
     $_SESSION['login']="";
 
  if (!isset($_SESSION['log']))
        $_SESSION['log']=false;
 
 
    if (isset($_POST['b_valider']))
    {        
        $requete = "SELECT * FROM utilisateur where identifiant=\"".$_POST['login']."\" AND MotDePasse =\"".$_POST['pass']."\";";
        $Resultat = mysql_query($requete,$db)or die(mysql_error());
        $nbrResultat = mysql_numrows($Resultat); 
 
        if ($nbrResultat>0)
        {
            $_SESSION['login']=$_POST['login'];
            $_SESSION['log']=true;
        }
        else
        {
            $_SESSION['login']="";
            $_SESSION['log']=false;
        }
    }

L'accès à la base n'est utile que sur la page de connexion !
Ensuite, au début de chaque page, tu vérifie si le login est bien rensiegné :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//ON TESTE SI L'UTILISATEUR S'EST LOGGE
if (!isset($_SESSION['loginAdmin']))
 $_SESSION['loginAdmin']="";
 
if (!isset($_SESSION['logAdmin']))
    $_SESSION['logAdmin']=false;
 
 
if ($_SESSION['logAdmin']==false)  
{
   //retour à la page de connexion
   Require 'login.php';
}
else
{ 
   //AFFICHAGE DE TA PAGE
}
turie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2006, 12h49   #5
Membre du Club
 
Inscription : janvier 2005
Messages : 71
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 71
Points : 52
Points : 52
déjà merci de vos réponse,

j'aimerais ajouter deux chose :

1° Mon code de la page de connexion marche car si un utilisateur reste inactif sur la page, au bour de 20 mn il est déconnecté ou si il rentre l'adresse en "brute" dans la barre d'adresse il est bien déconnecté. (Je prend quand meme en come la remarque de turie qui est juste).

2° Sur chaque page à laquelle on peut accéder à partir de google il y a ce message qui s'affiche tout en haut :
Citation:
Une version de Http:/IPduServeur/Logiciel/Page.php en provenance de votre cache personnel.
Cette page a peut-être été modifiée depuis. Cliquez ici pour obtenir la page actuelle.
Cette page étant stockée sur votre ordinateur, il n'est pas possible d'établir une liaison publique avec elle.

Il est possible que Google ne soit ni affilié aux auteurs de cette page ni responsable de son contenu. Cette page peut être protégée par des droits d'auteur.
Donc le probleme vient du cache de l'ordinateur, il y a il un moyen de désactiver le cache pour mon site ou de supprimer les informations contenues dedant.

NB L'utilisateur qui accède au logiciel depuis google se connecte en local sur le serveur (le serveur est situé dans l'agence principale de l'entreprise). Comme c'est un logiciel interne on se connecte avec l'adresse IP du serveur (en local pour l'agence principale et depuis internet pour les autres agences).
Le logiciel n'est aucunement référencé sous google.

Cordialement
dinde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2006, 14h52   #6
Membre du Club
 
Inscription : avril 2005
Messages : 50
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 50
Points : 51
Points : 51
Tu peux désactiver le cache, pour éviter le stockage en cache de tes pages html, cela ne vide pas le cache mais evite simplement de stocker la page actuelle dans le cache.

Code à placer entre tes balises <head> :

Code :
1
2
3
<META HTTP-EQUIV="expires" CONTENT="0">
 
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
turie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2006, 14h59   #7
Membre du Club
 
Inscription : janvier 2005
Messages : 71
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 71
Points : 52
Points : 52
merci je vais tester ça et je te redis
dinde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2006, 15h01   #8
Membre du Club
 
Inscription : avril 2005
Messages : 50
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 50
Points : 51
Points : 51
N'oublie pas de vider le cache internet explorer (ou mozilla) avant de faire tes tests.

Conseil:
vide le cache
ballade toi sur ton site en te loggant (en ayant pris soin au prealable de rajoute rle bout de code sur chaque page)
essaie de voir si la recherche google donne la meme chose
turie est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h24.


 
 
 
 
Partenaires

Hébergement Web