Gestion dynamique des droits utilisateurs

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 : Gestion dynamique des droits utilisateurs

par tom-over » 19 avr. 2007, 12:12

salut j'ai fait un systeme qui n'est peut être pas top niveau sécurité mais bon...
je propose quand même :

dans ta table "admin" ou "user" tu ajoute un champ 'droits' qui va de 1 à 3.

1 : Une partie accesssible uniquement par les membres.
2 : Une partie accesssible uniquement par les membres abonnés.
3 : pour les administrateurs du site.

ensuite lors du log de l'internaute tu créé une session avec 1 ou 2 ou 3.
$_SESSION['droits']

dans ta page pour vérifier le pass et login :
<?php
session_start();
include('connect.inc.php');

$pseudo = htmlspecialchars($_POST['pseudo'],ENT_QUOTES );
$password = htmlspecialchars($_POST['password'],ENT_QUOTES );



$requete = "SELECT * FROM admin WHERE pseudo='$pseudo' AND password='$password'";
$result = @mysql_query($requete);

    if ($enreg = @mysql_fetch_array($result))
    {
    // (identifant, mot de passe) est valide
        $_SESSION["membre"] = TRUE;
        $_SESSION["membreid"] = $enreg['id_admin'];
        $_SESSION["droits"]=$enreg['droits'];
        header("Location: index2.php");
        die();
    }
    else
    {
        $_SESSION["membre"] = FALSE;
        $_SESSION["droits"]=FALSE
        header('Location: index.php?msg=1');
        die();
    }

?>
dans toutes tes pages :
<?php
session_start();
include('connect.inc.php');

if (!isset($_SESSION["membreid"]))
{
// Si utilisateur pas autorisé il est reconduit
// sur le formulaire d'identification
header('Location: index.php?msg=1');
die();
}
else{
       // verification du droit pour cette page, ici c ok pour le droit 1 //
       if($_SESSION["droits"]=="1"){}
       
       //Si utilisateur pas autorisé il est reconduit
       // sur le formulaire d'identification
       else{
       header('Location: index.php?msg=1');
       }

}

?>

Re: Gestion dynamique des droits utilisateurs

par jojolapine » 26 févr. 2007, 16:30

bonjour,
j'ai relu ce passage:
Idéalement, il faudrait une fonction PHP qui ajoute dynamiquement un utilisateur à un groupe de sécurité apache.
Je ne sais pas si ton groupe d'utilisateur qui aura accès à ces images sera grand... mais si il ne dépasse pas la centaine... (je dis au pif, j'ai jamais travailler avec apache pour de si grands nombres)
Tu peux utiliser les fonctions de gestion de fichier tel que file(),fopen(),fread(),fput(), file_get_contents(), file_put_contents(), ....
Pour écrire dans ton .htpasswd les noms et mot de passes.... (je sais plus le nom de la fonction, mais je croit qu'il en existe une qui peut retourner un hash de mot de passe comme apache).
Sinon une autre solution, un peu plus lourde pour le serveur je pense, mais pour une plus grand échelle, elle est peut-être préférable...
T u mets tes images dans un dossier "deny from all", puis pour afficher une image, tu te sert d'un script php, qui récupère l'image et l'affiche (à l'aide de la librairie GD), et à ce moment là, tu peux gérer tes utilisateurs comme dans le liens que je t'ai filé....
Voilà des idées un peu en vrac, dis moi ce qui va/ne va pas....

par zeus » 26 févr. 2007, 16:06

Modération :
gomodo, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ

par gomodo » 26 févr. 2007, 15:42

Sur un autre forum on me propose :
liens = http://www.tonsite.com/image.php?img=furet.jpg

image.php
<?php 
$image = 'images/' . basename($_GET['img']); 
if( file_exists( $image ) ) { 
  // Tu mets ici ce que tu veux pour contrôler l'accès 
  session_start(); 
  if( ! isset( $_SESSION['user'] ) ) $image = 'images/interdit.jpg'; 
} else { 
  $image = 'images/inconnu.jpg'; 
} 

$size = getimagesize( $image ); 
header('Content-type: ' . $size['mime']); 
readfile( $image ); 
?>  
Le répertoire "images" est protéger en accès avec un ".htaccess" qui contient "deny from all".

Ca me parait bon...

par gomodo » 26 févr. 2007, 15:21

Je suis désolé. mais l'exemple (très interessant) permet de protéger une page PHP.. mais n'empêche pas du tout d'accéder a une image :
Si le visiteur saisi dans le navigateur : http://www.toto.com/image/image_abonne.jpg

Elle va s'afficher, le visiteur authentifié ou non !

par jojolapine » 26 févr. 2007, 15:12

Et hop un petit tour içi!! :wink:

par gomodo » 26 févr. 2007, 14:57

Je peux interdire l'accès a une page uniquement par PHP?
C'est pourtant apache qui est le serveur.. comment empêcher en PHP l'accès à un http://www.toto.com/interdit.htm ?

Je vois pas bien comment ça marche

par titerm » 26 févr. 2007, 14:27

Apache ne peut rien pour toi.
C'est à toi de gérer tes groupes et utilisateurs et d'utiliser une session pour l'authentification et l'accès aux pages

Gestion dynamique des droits utilisateurs

par gomodo » 26 févr. 2007, 14:14

Bonjour,

Je recherche de l'aide, car je doit mettre en place d'un site a 3 niveaux d'accès, et
je ne sais pas comment articuler les droits apaches et les utilisateurs que j'authentifie en PHP :

Une partie accessible par tous (anonyme, non authentifié) : Page d'accueil, etc.
Une partie accesssible uniquement par les membres (authentifiés et connectés) : html, images, etc
Une partie accesssible uniquement par les membres abonnés (ayant payé) : html, images, etc

Bien sur, on peut modifier manuellement les fichiers de config apache htaccess,
et spécifier manuellement les utilisateurs autorisés.
Si ce genre de gestion est envisageable sur un site perso, bien entendu à l'échelle d'un site professionnel c'est exclu.

Donc cette gestion d'accès doit être dynamique.
Par exemple, un membre qui vient de s'abonner doit automatiquement devenir membre du groupe qui à les droits sur des dossiers des abonnés (sans bidouille sur les fichiers htaccess).

Etablir des droits pour un groupe d'utilisateur, Comment puis-je faire ?
Peut-on donner ou retirer des droits sur un dossier à un utilisateur en cours de session PHP?

Idéalement, il faudrait une fonction PHP qui ajoute dynamiquement un utilisateur à un groupe de sécurité apache.

Pouvez-vous m'aider ? :?: