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 sylvain cresto (site web personnel) . Évalué à 3.
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 peck (site web personnel) . Évalué à 2.
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 David . Évalué à 1.
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 David . Évalué à 1.
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.