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 14/05/2006, 13h19   #1
Membre du Club
 
Inscription : novembre 2005
Messages : 103
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 103
Points : 44
Points : 44
Envoyer un message via MSN à Legenyes
Par défaut [Sécurité] Bloquer l'accès à un fichier

Bonjour tous le monde,
J'aimerais bien restreindre l'acces de tous les documents de monde site aux membres seulement.

j'ai deja réussi a produire le fichier .htaccess comme suit :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ErrorDocument 404 http://www.monsite.com/securedoc.php/erreur404.php
 
<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteRule "\.(doc|pdf|sxw|ppt|ps|txt|xls|html|gif|png|jpg|jpeg|DOC|PDF|SXW|PPT|PS|TXT|XLS|HTML|GIF|JPEG|JPG|PNG)$" http://www.monsite.com/securedoc.php
</IfModule>
 
<IfModule !mod_rewrite.c>
        <IfModule mod_access.c>
                <Files ~ "\.(doc|pdf|sxw|ppt|ps|txt|xls|html|gif|png|jpg|jpeg|DOC|PDF|SXW|PPT|PS|TXT|XLS|HTML|GIF|JPEG|JPG|PNG)$">
                        Deny from all
                        ErrorDocument 403 http://www.monsite.com/securedoc.php
                </Files>
        </IfModule>
</IfModule>
et voci mon fichier securedoc.php
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
 
require_once("mainfile.php");
$_SERVER['PHP_SELF'] = "modules.php";
$home = 1;
 
include("header.php");
include("modules.php");
 
OpenMain();
 
 
$uri = $REQUEST_URI;
 
if (($_SESSION['user_level']!=1) && ($_SESSION['user_level']!=2)) {msgdie('1',_RESTRICTEDAREA);}
else{        
        if (!ereg("files/doc/",$uri)){
            msgdie($uri,_RESTRICTEDAREA);
        }
 
        $fichier = preg_replace(",^.*/IMG/,", "IMG/", $uri);
        if (!@file_exists($fichier) || !@is_file($fichier)){
            not_found();
        }
 
        $size = @filesize($fichier);
        if (!$size){
                not_found();
        }    
 
        $if_modified_since = ereg_replace(';.*$', '', $HTTP_IF_MODIFIED_SINCE);
        $gmoddate = gmdate("D, d M Y H:i:s", @filemtime($fichier))." GMT";
        if ($if_modified_since == $gmoddate) {
            http_status(304);
            exit;
        }
        http_status(200);
 
        $nom=ereg_replace(".*/","",$fichier);
        $extension=ereg_replace("^(.*)\.(.*)$", "\\2", $nom);
        $req= "SELECT mime_type FROM spip_types_documents WHERE extension='".$extension."'";
        $res = spip_query($req);
        if (spip_num_rows($res)>0){
            $row = spip_fetch_array($res);
            $mimeType = $row['mime_type'];
            Header('Content-Type: '.$mimeType);
        }
 
        Header("Content-Length: ".$size);
        Header("Last-Modified: ".$gmoddate);    
        Header('Content-Disposition: attachment; filename="'.$nom.'"');
 
        readfile($fichier);
}
 
?>
Or pour le moment personne n'a acces au fichier. comment dois-je faire. Quelqu'un voi t'il l'erreur.

Merci d'avance
Legenyes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2006, 13h23   #2
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
Salut !

Sauf erreur de ma part, tu utilises les sessions, or avec le ErrorDocument il est possible que la session ne soit pas propagées...

tu as vérifié que tu avais le bon session_id() sur securedoc ?
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2006, 13h29   #3
Membre du Club
 
Inscription : novembre 2005
Messages : 103
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 103
Points : 44
Points : 44
Envoyer un message via MSN à Legenyes
Code :
1
2
3
if (!ereg("files/doc/",$uri)){
            msgdie($uri,_RESTRICTEDAREA);
        }
c'est ce bloque ci du code qui pose probleme pour le moment.
Je crois comprend que c'est le chmin d'acces qui ne doit pas etre bon.
mais comment dois-je faire ca rmon script pouvoir etre appeler de n'importe ou et pour pouvoir ouvri un fichier se trouvant n'importe ou dans l'arborescence de mon site...;
Legenyes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2006, 13h35   #4
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
bah, là c'est une restriction sur le chemin du fichier...
il te suffit de l'enlever si tu ne veux pas mettre de restriction...
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2006, 13h53   #5
Membre du Club
 
Inscription : novembre 2005
Messages : 103
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 103
Points : 44
Points : 44
Envoyer un message via MSN à Legenyes
Merci pour la rapidité,

j'ai supprimer ce bloc. mais l'erreur se poursuit a cette endroit.
Code :
1
2
3
4
5
6
7
8
if (!@file_exists($fichier) || !@is_file($fichier)){
            msgdie('Erreur','Fichier non trouvé');
        }
 
        $size = @filesize($fichier);
        if (!$size){
                msgdie('Erreur','Fichier non trouvé');
        }
Il ne trouve pas le fichier

EDIT : Je ne comprend pas quelque chose.
la variable $REQUEST_URI contient le nom du fichier securedoc.php.
Comment je fais alors pour savoir quelles est le fichier que je dois ouvrir. il me semblais que cette variable contenant le chmin d'acces du fichier que j'allais ouvrir...
Legenyes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2006, 14h10   #6
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
OK....

je pense que je commence à comprendre... j'avais eu le même problème quand j'avais voulu bidouillé un truc...

je pense que le REQUEST_URI est remplacé parce que tu spécifies une URL absolue...

au lieu de mettre http://www.monsite.com/securedoc.php

mets plutôt /securedoc.php
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2006, 14h14   #7
Membre du Club
 
Inscription : novembre 2005
Messages : 103
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 103
Points : 44
Points : 44
Envoyer un message via MSN à Legenyes
comique, dpuis que je vioent de faire cela. il n'y a plus aucune image de mon site qui s'affiche.

avant je n'vais pas acces au document. maintenant je n'ai meme plus acces au image . lol
Legenyes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2006, 14h17   #8
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög


le fichier .htaccess est bien dans le dossier qui est à la racine de ton site ?

ton site n'est pas dans le sous-dossier d'un autre site ?
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2006, 14h18   #9
Membre du Club
 
Inscription : novembre 2005
Messages : 103
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 103
Points : 44
Points : 44
Envoyer un message via MSN à Legenyes
le fichier securedoc.php et .htacces son a la racine de mon site.
dans le dossier www de mon hebergeur.
Legenyes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2006, 14h22   #10
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
que contient REQUEST_URI avec la modification ?
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2006, 14h25   #11
Membre du Club
 
Inscription : novembre 2005
Messages : 103
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 103
Points : 44
Points : 44
Envoyer un message via MSN à Legenyes
toujours
/securedoc.php


cela na rien changer sauf m'enlever les images
Legenyes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2006, 14h32   #12
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
...

Essaie ceci :
Code :
        RewriteRule "^(.*\.(doc|pdf|sxw|ppt|ps|txt|xls|html|gif|png|jpg|jpeg|DOC|PDF|SXW|PPT|PS|TXT|XLS|HTML|GIF|JPEG|JPG|PNG))$" securedoc.php?requested=$1 [QSA]
et le fichier demander devrait être dans $_GET['requested']
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2006, 14h51   #13
Membre du Club
 
Inscription : novembre 2005
Messages : 103
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 103
Points : 44
Points : 44
Envoyer un message via MSN à Legenyes
j'ai un peu chipoter et voici ce que j'ai fais.
un fichier .htacces a la racine contenant ceci :
Code :
1
2
ErrorDocument 404 erreur404.php3
options -indexes
un fichier .htacces dans le dossier a proteger contenant ceci :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ErrorDocument 404 http://www.monsite.be/erreur404.php
 
<IfModule mod_rewrite.c>
        RewriteEngine On
       RewriteRule "^(.*\.(doc|pdf|sxw|ppt|ps|txt|xls|html|gif|png|jpg|jpeg|DOC|PDF|SXW|PPT|PS|TXT|XLS|HTML|GIF|JPEG|JPG|PNG))$" http://www.monsite.be/securedoc.php?requested=$1 [QSA]
       </IfModule>
 
<IfModule !mod_rewrite.c>
        <IfModule mod_access.c>
                <Files ~ "\.(doc|pdf|sxw|ppt|ps|txt|xls|html|gif|png|jpg|jpeg|DOC|PDF|SXW|PPT|PS|TXT|XLS|HTML|GIF|JPEG|JPG|PNG)$">
                        Deny from all
                        ErrorDocument 403 http://www.monsite.be/securedoc.php?requested=$1 [QSA]
                </Files>
        </IfModule>
</IfModule>

un fichier securedoc.php à la racine contenant ceci :
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 
<?php
 
require_once("mainfile.php");
$_SERVER['PHP_SELF'] = "modules.php";
$home = 1;
 
include("header.php");
include("modules.php");
 
OpenMain();
 
$uri = $_GET['requested'];
 
if (($_SESSION['user_level']!=1) && ($_SESSION['user_level']!=2)) {msgdie('Erreur',_RESTRICTEDAREA);}
else{        
        echo $REQUEST_URI;
        if (!ereg("files/doc/",$uri)){
            msgdie('Erreur',_RESTRICTEDAREA);
        }
 
        $fichier = preg_replace(",^.*/IMG/,", "IMG/", $uri);
        if (!@file_exists($fichier) || !@is_file($fichier)){
            msgdie('Erreur',_FILENOTFOUND);
        }
 
        $size = @filesize($fichier);
        if (!$size){
                msgdie('Erreur',_FILENOTFOUND);
        }    
 
        $if_modified_since = ereg_replace(';.*$', '', $HTTP_IF_MODIFIED_SINCE);
        $gmoddate = gmdate("D, d M Y H:i:s", @filemtime($fichier))." GMT";
        if ($if_modified_since == $gmoddate) {
            http_status(304);
            exit;
        }
        http_status(200);
 
        $nom=ereg_replace(".*/","",$fichier);
        $extension=ereg_replace("^(.*)\.(.*)$", "\\2", $nom);
        $req= "SELECT mime_type FROM spip_types_documents WHERE extension='".$extension."'";
        $res = spip_query($req);
        if (spip_num_rows($res)>0){
            $row = spip_fetch_array($res);
            $mimeType = $row['mime_type'];
            Header('Content-Type: '.$mimeType);
        }
 
        Header("Content-Length: ".$size);
        Header("Last-Modified: ".$gmoddate);    
        Header('Content-Disposition: attachment; filename="'.$nom.'"');
 
        readfile($fichier);
}
 
?>

Un grand merci tous fonctinne
Legenyes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2006, 14h54   #14
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
ATTENTION pour le cas ou le module d'URL_RW n'est pas chargé, il ne faut pas mettre le ?requested=$1 [SQA]

c'est quelque chose qui est propre à l'URL_RW...

pour le cas ou l'URL_RW n'est pas chargé, il te suffit (normalement) d'utiliser REQUEST_URI...
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2006, 14h57   #15
Membre du Club
 
Inscription : novembre 2005
Messages : 103
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 103
Points : 44
Points : 44
Envoyer un message via MSN à Legenyes
hein comment ca ? pas compris.
j'ai crier victoire trop tot. ca fonctionne avec certain fichier mais pa tous.
j'ai par exemple essayer avec deux fichier word contenu dan sle mem dossier. il y en a un qui fonctionne a merveille (cad acces seulement si on est loggé) par conte l'autre refuse l'acces tous le temps
Legenyes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2006, 14h59   #16
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
dans le cas des fichiers dans le même dossier, je vois pas... il y a peut-être des caractères spéciaux dans le nom du second...

pour ce que je disais avant :
Code :
1
2
3
4
                <Files ~ "\.(doc|pdf|sxw|ppt|ps|txt|xls|html|gif|png|jpg|jpeg|DOC|PDF|SXW|PPT|PS|TXT|XLS|HTML|GIF|JPEG|JPG|PNG)$">
                        Deny from all
                        ErrorDocument 403 http://www.monsite.be/securedoc.php?requested=$1 [QSA]
                </Files>
ne fonctionnera pas parce que la partie est propre à l'URL-ReWritting
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h38.


 
 
 
 
Partenaires

Hébergement Web