Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

[résolu] securiser partie admin en php


HeAdLeSs

Messages recommandés

Bonjour à tous,

 

 

Je voulais savoir comment vous faisiez pour sécuriser l'accès à une partie admin ?

 

Ce que je fais :

 

On passe par une page de connexion avec login et mot de passe.

 

1 - Je teste que le login existe dans la base, si oui je verifie le mot de passe sinon erreur.

2 - Si le mot de passe est mauvais => erreur, sinon je set $_SESSION["nom"] et $_SESSION["mdp"];

3 - Sur chaque page suivante de la partie admin je teste l'existence de mes variables de session et ensuite leur contenu que je compare à la base comme dans 1&2 si ca correspond j'affiche la page sinon erreur.

 

Est-ce assez restrictif ??

 

Et sinon comment faire pour activer la prise en compte de la casse ?

 

 

Merci de donner votre avis !

Modifié par HeAdLeSs
Lien vers le commentaire
Partager sur d’autres sites

Invité tesgaz

Salut,

 

avec un fichier .htaccess qui fait référence au fichier de mdp

un fichier de mdp (un nom farfelu style /325-virgule3.txt)

 

ensuite la partie admin devrait avoir un nom de dossier à la con (idem, difficile à connaître)

genre : /pasdecassechezbruno/

avec un fichier index.html vide

 

ensuite, interdire la visite du dossier par les moteur de recherche en créant un fichier

robot.txt à la racine du site

exemple

User-agent: *
Disallow: /pasdecassechezbruno/

 

voila,

 

déja ca donne un peu plus de sécurité, enfin, c'est ce que j'ai fais sur ma partie admin de mon site perso

 

mais pas sûre que ce soit efficace à 100%

Lien vers le commentaire
Partager sur d’autres sites

Salut

Pour la casse de quoi ?

Par contre pour la requête à la base de données sort plutôt le nombre de résultat que des données.

Si le résultat = 1, il est loggé, sinon non.

Puis tu mets une variable de sessions a 1.

Il ne faut pas seulement que tu test si cette variable est à 1, mais également si elle existe.

Lien vers le commentaire
Partager sur d’autres sites

Salut

Pour la casse de quoi ?

Par contre pour la requête à la base de données sort plutôt le nombre de résultat que des données.

Si le résultat = 1, il est loggé, sinon non.

Puis tu mets une variable de sessions a 1.

Il ne faut pas seulement que tu test si cette variable est à 1, mais également si elle existe.

504202[/snapback]

 

 

Je viens de relire ce que tu as ecris et je ne suis pas d'accord. Avant j'utilisé effectivement juste une variable de session initialisée à 1 MAIS c'est tres facile de passer au travers...

C'est moins sécurisé de passer une variable initialisée à 1 que 2 variables avec des chaines de caractères que l'on verifie à chaque page.

 

Enfin c'est ce que je pense.

 

 

Une idée pour prendre en compte la taille des caractères (je veux dire qu'il fasse la difference entre majuscules et minuscules) pour le mot de passe ?

Lien vers le commentaire
Partager sur d’autres sites

En général la casse est prise par défaut.

Si tu n'es pas certain fais des essais en maj et minuscules.

Si tu ne veux pas te soucier de la casse tu peux faire comme un moteur de recherche cad que dans ta requête tu fais un UPPER du champ donné et du champ dans la base

 

WHERE UPPER(champ_mdp) = UPPER(nom_du_champ_mdp_de_la_base)

 

edit: merde grilled :P

 

Suis d'accord pour les variables, une ne suffit pas, j'aurais du étoffer.

:-(

Je parlais simplement de ne pas passer le nom d'utilisateur et le mdp dans chaque page, ça pose un pb de sécurité.

Par contre, si tu couple une variable d'utilisateur à la variable de session ($_SESSION["phpsessid"]), ça peut être pas mal non ?

Modifié par minos
Lien vers le commentaire
Partager sur d’autres sites

Perso j'authentifie les utilisateurs dès le départ.

Sur chaque page, je gère le contenu en fonction du "profil" de l'utilisateur :

- pas authentifié --> rien de spécial (si : la boite login + pass)

- authentifié --> j'ajoute les liens accessibles uniquement aux membres

- authentifié et possède des droits "admin" dans la table des droits des utilisateurs --> j'ajoute tout ce qui concerne la gestion du site

 

Sachant que l'authentification se fait par user + mot de passe, vérifiés en base, puis renvoyés par le biais d'un code de hashage (sorte de "userid" temporaire) qui est la seule info qui fasse les allers-retours entre le navigateur et le serveur et "est expirée" automatiquement après 15 minutes ou lorsqu'elle n'est plus associée à la session (reconnue par le SessionID) qui l'a créée. Dans ce cas, quelle que soit la page demandée, on retourne à l'authentification (la homepage).

Lien vers le commentaire
Partager sur d’autres sites

Salut Kewlcat,

 

Pas mal le principe du hashage. Tu peux m'expliquer un peu plus precisement comment tu fais ?

 

Pour ce qui est de l'authentification au depart (voir sur toutes les pages) je suis d'accord mais ce serait trop lourd pour le site que je réalise. il s'agit plus d'un site informatif, qui bougera peu (en tout cas c'est ce qu'on m'a dit).

 

Il y a donc 4 administrations possibles :

1 - admin full power qui gere tout tout tout et re-tout.

2 - mini admin qui peut gerer le personnel.

3 - personnel avec pouvoir qui peut modifier sa fiche et poster une news.

4 - personnel qui peut la modifier.

 

 

Voila

Modifié par HeAdLeSs
Lien vers le commentaire
Partager sur d’autres sites

Je viens d'avoir une idée avec ton histoire de hashage...

 

Lors de la connexion on définit :

 

$_SESSION["nom"] // premiere condition d'equivalence
$_SESSION["mdp"] // deuxieme condition d'equivalence
$_SESSION["numero"] // pour renseigner la clause WHERE lors des requetes (plus simple)
$_SESSION["hash"] // troisieme condition d'equivalence

 

$_SESSION["hash"] est obtenu en faisant un rand(min,max) et le chiffre obtenu est inscrit dans la base SQL. Evidemment à chaque login il est remplacé par le nouveau.

 

Sur les pages suivantes il suffit de vérifier que le $_SESSION["nom"] existe et qu'il est egal au nom dans la base.

Si ca marche on verifie dans se cas l'existence de $_SESSION["mdp"] et que son contenu est bien egal au mot de passe dans la base.

Si c'est bon on verifie maintenant que la variable $_SESSION["hash"] existe et que sa valeur est bien la meme que dans la base.

 

Voilà c'est pas trop mal ca non ? Qu'est-ce que vous en pensez ?

 

 

Merci.

Modifié par HeAdLeSs
Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...