Bonjour,

Je viens de découvrir le site et de regarder les tutos PHP

Dans un Tuto, il est indiqué au détour d'une phrase, j'installe mon fichier index (gestion de l'appli) dans le sous dossier "public" pour des raisons de sécurité, mais sans expliquer pourquoi ?

Savez-vous pourquoi il est préférable de mettre ce fichier dans le dossier "public" plutot qu'à la racine du site.

@+ et @ Bientot....

6 réponses


C'aurait été cool de mettre le lien vers ce don tu parles :-s
Dans le flou, je suppose qu'il verrouille le dossier public en tant que racine du site via url-rewriting ou config d'un vhost...
Ce qui se trouve hors du dossier public n'est donc pas accessible via url :-)
On pourra t'en dire plus si tu fais l'effort de la précision...

scamphp
Auteur

Salut et merci pour ta réponse, je n'avais pas indiqué le lien du tuto, car le tuto n'vait pas pour objet (sujet) la sécurité, mais plutot l'organisation du site : [https://www.grafikart.fr/formations/programmation-objet-php/tp-structure]

Super Tuto et comme il disait au détour d'une phrase, que l'organisation Public / App ... est une bonne pratique aussi pour la sécurité je voulais juste comprendre pour quoi ;)

Grace à ta réponse maintenant, j'ai compris pourquoi...

Comme j'utilisais Wordpress avant et que dans woredpress le fichier index est à la racine et que tous les dossiers sont des enfants de la racine, je me demandais pourquoi cela pourquoi cette remarque.

D'ailleur pour pousser plus loin la discussion quels sont les avantages et les inconvénient de ces 2 méthodes
Un cran au dessus de la racine
Ou comme wordpress les fichiers et dossiers à la racine

Sur ton serveur, tu as un dossier dans lequel tu mets tes sites!
Chaque dossier enfant est un site...
Si la racine physique d'un site est routable, toutes les ressources qu'elle contient sont routables! Donc, ensuite, faut se casser le cul avec du rewriting et du .htaccess ou solution équivalente pour dire "ça faut pas que ce soit accessible, mais ça oui, et ça non", gnah gnah gnah!!
Le plus simple est de définir, dans la racine physique qui ne sera pas routable, un dossier "public" qui contient toutes les ressources routables! Et mettre dans d'autres dossiers, à côté de ce dossier "public" les ressources non routables :-)
Tout ceci sachant que tes scripts dynamiques peuvent tout à fait faire référence à des ressources non-routables comme d'autres scripts via include, par exemple... Seulement, ces scripts ne seront pas accessibles directement via une requête http ;-)

scamphp
Auteur

Bon ben voila une réponse hyper claire. MERCI

Juste pour le fun vous pensez quoi du coup de la structure de Wordpress ? les + les -

Je suis pas un spécialiste mais, à priori, je dirais que wordpress ne s'adresse pas aux développeurs purs et durs mais plutôt à des gens qui ont peu de connaissances en développement mais souhaitent malgré tout construire une appli web relativement complexe :-)
Mais, d'un autre côté, y a-t-il vraiment des ressources que l'on souhaite garder privées sur un wordpress?

Pour le dossier public, c'est un enjeu de sécurité... Tu ne donnes accès en http qu'aux fichiers qui ont réellement besoin d'être appelés directement (sans être inclus). Comme l'explique bien @psylozoff ;)
Wordpress est pour moi un "honey pot", c'est plein de failles de sécurité (voir le nombre de release qui sortent chaque mois), c'est bien pour un p'tit blog où la sécurité n'est pas essentielle...
Pour un véritable applicatif web sécurisé, robuste et fiable, se tourner vers un bon framework (Symfony, RubyOnRails, etc.). Cela demande de l'investissement en temps pour apprendre, mais on récupère ce temps ensuite en dev, maintenabilité...