Forum Programmation.web Authentification et permissions sur repertoires

Posté par  .
Étiquettes : aucune
0
9
mai
2007
Bonjour,

Je réalise actuellement une interface de monitoring avec apache/debian/php, et j'aimerais sécuriser l'acces à l'interface par une page de login.
Le problème, c'est que je n'arrive pas a configurer correctement les permissions pour accéder à la page de login ou monitoring.

Voici le problème :
Mon DocumentRoot se trouve sur /srv.
-J'ai un fichier logon.php qui se trouve sur /srv, qui récupère le couple login/password par une session et la renvoie à une page hidden.php, qui va comparer ce couple à une BDD d'utilisateurs ORACLE

-Les données du monitoring dans /srv/monitoring, et ne doivent pas etre accessibles en tapant l'url, il faut pour y accéder se logger sur /srv/logon.php

J'ai donc essayé de faire en sorte que l'utilisateur ne puisse accéder qu'à logon.php, /srv/monitoring n'étant accessible qu'une fois loggué.


Voici donc ce que j'ai mis dans mon httpd.conf:

<Directory "/srv">
Options -Indexes FollowSymLinks
AllowOverride Node
Ordre allow,deny
Allow from all


<Directory "/srv/monitoring">
Options -Indexes FollowSymLinks
AllowOverride Node
Ordre deny,allow
Deny from all



Voici mon logon.php:
<?php
session_start();
if($_SESSION['logged']=='false'){
echo "Bad Password";
}
?>

Et mon hidden.php:

<?php
session_start();
$log = $_POST['login'];
$pass= $_POST['password'];

$cryptedPass = md5($pass);

$db_conn = ocilogon("hr", "sumomath", "//127.0.0.1/XE");
$cmdstr = "SELECT login,password FROM users WHERE login='$log'";
$parsed = ociparse($db_conn, $cmdstr);
ociexecute($parsed);

while (oci_fetch($parsed)) {
$dbCryptedPass = ociresult($parsed, "PASSWORD");
}

if(strcmp($cryptedPass,$dbCryptedPass)==0){
echo strcmp($cryptedPass,$dbCryptedPass);
header("Location: /monitoring/index.html");
}else{
$_SESSION['logged']='false';
header("Location: logon.php");
}
?>



Or, apres m'etre loggé, j'arrive sur http://localhost/monitoring/index.html avec une erreur 403 forbidden.
D'un coté, je comprends que l'acces me soit refusé, puisque j'y ais interdit l'acces.
Mais comment faire alors pour dire au serveur que l'acces à /srv/monitoring n'est possible que par l'intermédiaire de logon.php ( hidden.php en fait, comme il y a un header dans le dernier vers /srv/monitoring) ?

Pr résumer ,il s'agit d'arriver à outrepasser l'interdiction du fichier httpd.conf par l'intermédiaire d'une page php.

Merci de vos réponses !
  • # mod_authn_dbd

    Posté par  (site web personnel) . Évalué à 3.

    Salut,

    Quelques remarques, mais c'est surement du à un mauvais copier/coller de ta conf (?) :
    AllowOverride Node => AllowOverride None
    Ordre => Order

    Sinon effectivement avec le "Deny from all" dans /srv/monitoring ça parait normal que tu n'y ai pas accès.
    Peutêtre devais tu regarder du coté de mod_authn_dbd qui fais ce que tu sembles vouloir: http://httpd.apache.org/docs/2.2/mod/mod_authn_dbd.html
  • # Authentification php

    Posté par  (site web personnel) . Évalué à 2.

    Mais pourquoi veux-tu faire une authentification php ?

    Une authentification php c'est toi qui la code donc c'est :
    - du temps perdu qui pourrait servir à améliorer ton code
    - une interface non standard
    - de potentielles (nombreuses ?) failles de sécurités
    - l'impossibilité de protéger des fichiers non php

    A coté de ça, il existe l'authentification apache qui est déjà faite pour un grand nombre de cas et qui fonctionne a coup sûr. Si à la rigueur tu veux de l'identification en php (et non de l'authentification) tu peux récupérer le login apache.

    Tu peux utiliser le mod_auth_mysql de apache qui te permet de faire une authentification mysql : http://www.cgi101.com/class/password/mod_auth_mysql.html
    • [^] # Re: Authentification php

      Posté par  . Évalué à 1.

      Merci de vos réponses.
      J'ai finalement laissé tombé cette solution et me suis orienté vers une solution plus simple, l'authentification basic. Mais j'ai un autre problème bizarre.
      D'abord voici mon fichier de conf:
      <Directory "/srv">
      Options -Indexes FollowSymLinks
      AllowOverride None
      Order allow,deny
      Allow from all


      <Directory "/srv/monitoring">
      Options -Indexes FollowSymLinks
      AllowOverride None
      AuthType basic
      AuthName "test"
      AuthUserFIle /usr/local/apache2/pass
      Require valid-user


      Sur le mozilla de ma debian, j'arrive a accéder à la page d'accueil sur /srv sans mot de passe. Normal. Ensuite qd je clique sur le lien pr accéder au monitoring, il y a une popup d'authentification, comme attendu.

      Le problème est que sur windows, avec IE ou firefox, dès que j'essaie d'accéder à la page d'accueil , la popup d'authentification apparait !! Ce qui n'est pas normal du tout, vu que les permissions semblent correctes et marchent sur la debian. Que je mette le bon mdp ou que j'annule, la page d'acceuil fini par s'afficher.
      Ensuite qd je clique sur le lien pr le monitoring, ca remarche comme attendu.

      Quelqun a t il une idée?
      Merci!
      • [^] # Erreur de ma part

        Posté par  . Évalué à 1.

        Bon en fait, j'avais ce bug car dans la page d'accueil il y avait utilisation d'un CSS se trouvant dans le repertoire monitoring.
        Par contre, c'est tout de meme bizarre que ca passe sur ma debian -_-.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.