web-dev-qa-db-fra.com

Installation d'un framework PHP sur un hôte sans dossiers public_html ou www (ftp est DocumentRoot)

J'ai développé un framework PHP qui fonctionne avec la structure de répertoires de

/  
/classes/  
/templates/  
/.../  
/www/ (public_html)

Mais j'ai rencontré un hôte qui n'autorise que FTP à DocumentRoot, ce qui pose un risque pour la sécurité de mes scripts. Je ne veux pas que la racine du site pointe vers la racine où se trouve mon framework.

J'ai posé un question sur stackoverflow avec une question à un .wraccess rewriterule pour résoudre potentiellement ceci

Y a-t-il une meilleure méthode pour faire cela?

4
StrikeForceZero

Vraisemblablement, vous devez simplement bloquer l’accès HTTP (renvoyer un code d’état HTTP de 403 - interdit) à ces dossiers, s’il est stocké à la racine du document? Dans votre fichier .htaccess racine de document:

# Block HTTP access to certain folders
RewriteRule ^classes/.* - [F]
RewriteRule ^templates/.* - [F]

(... et créez de la flexibilité dans votre framework pour lui permettre d'être situé au même niveau que le code HTML public.)

Si je comprends bien votre autre question/alternative ... Je ne vois aucun avantage à essayer de faux une racine de document à l'aide de règles de réécriture. Vraisemblablement, c'est pour maintenir la structure de répertoires? Je ne pense pas que cela va ajouter plus de sécurité et introduit simplement une couche supplémentaire de complexité, OMI.

4
MrWhite

La meilleure solution consiste à coder de manière à éviter tout risque de sécurité pour les utilisateurs qui demandent ces fichiers. N'oubliez pas que, puisque PHP est interprété côté serveur, vous pouvez coder vos fichiers renvoyer un document vide ou rediriger ailleurs lorsque demandé.

C'est ce que fait Wordpress. Essayez de demander n'importe quel fichier que vous n'êtes pas censé et le navigateur obtient simplement un document vide. Même si vous demandez wp-config.php, qui est le fichier standard contenant les informations d'accès les plus sensibles, vous obtenez tout simplement rien.

3
Itai