astuce .htaccess - php et inclusions

Mammouth du PHP | 514 Messages

24 janv. 2007, 13:54

Hello !

Je travaille avec les inclusions en php. Ma page index sert de carrefour à tout mon programme.

Danger : lorsque quelqu'un s'amuse à taper le lien direct vers une page incluse, il peut accessoirement lire son contenu.

Pour éviter ça, et pour obliger les utilisateurs à passer par la page d'index, mettez le code suivant dans votre htaccess, au niveau de la racine :

Code : Tout sélectionner

<Files *.php> Deny from all </Files> <Files index.php> Allow from all </Files>
Cadeau !

@+++

[edit]
Cette astuce est surtout valable avec l'utilisation des templates. En effet, TOUT le code php est protégé, et le code html ne demande pas de mot de passe à l'accès :d.
[/edit]

Eléphant du PHP | 396 Messages

24 janv. 2007, 15:14

Merci pour cette astuce :)

Par contre, si tu as une page php "de traitement" qui n'est pas incluse par index.php (une page qui traite les données renvoyées par un formulaire par ex), cela pose un problème non?

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

24 janv. 2007, 17:02

Une autre solution, mais dans le même esprit,
consiste à déposer la page index.php sur la racine de son site
et toutes les autres pages dans un sous-répertoire protégé par un .htaccess. ;)

Avantage : elle sécurise aussi les pages .HTM qui pourrait être incluses...

ViPHP
fab
ViPHP | 2657 Messages

24 janv. 2007, 20:19

Le problème d'inclusions n'est pas pour autant résolu a 100 %
exemple de code troué
$file = $_GET['file'];
if(isset($_GET['file]) { $inc = $file; } else { $inc = "accueil.php"; }
include($inc);
Avec ça & ton .htaccess ton site ressemblera toujours à un bon gruyere :)

Perso j'utilise un deny from all pour tout les fichiers et je rajoute des exeptions sur les fichiers directement consultables
Et je fais ULTRA attetion au fichier à inclure :)

Cette faille n'est pas rien il m'a permis de pirater pendant 6 mois un abrutis de ma classe que forcement j'aimais pas :)
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Eléphant du PHP | 396 Messages

24 janv. 2007, 20:48

Il me semblait bien qu'on en avait déjà parlé :)

http://www.phpfrance.com/forums/viewtopic.php?t=23716

Mammouth du PHP | 1885 Messages

25 janv. 2007, 03:23

J'ai qu'un fichier index.php et les répertoires css, images, etc. accessible publiquement via HTTP. Le reste se trouve tout dans le répertoire parent, inaccessible via HTTP.
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Eléphant du PHP | 100 Messages

07 févr. 2007, 03:04

Personellement, dans mon index je créé une constante ex:
define('protect',true);
if(file_exists('traitement.php')){include_once('traitement.php');}
et dans mon fichier de traitement je met en premiere ligne :
if(!defined('protect')){exit;}

Selon moi c'est assez efficace non ?

ViPHP
ViPHP | 4674 Messages

07 févr. 2007, 13:16

Bonjour !

Sinon si l'on a que quelques pages à enlever, avec les commandes Apache --dans le .htaccess --, on peut faire de la façon suivante :

Code : Tout sélectionner

<FilesMatch "^(index|pingback|autrepage)?\.php$"> deny from all </FilesMatch>
La regex est écrit au pif, mais c'est pour reprendre l'idée de mcorgnet étendue à plusieurs fichiers (limitée à 5 ou 6 grand maximum évidement). Et également pour introduire FilesMatch.

:)
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).