Code fichier php est-il accessible depuis un navigateur ? Protection ?

Code fichier php est-il accessible depuis un navigateur ? Protection ? - PHP - Programmation

Marsh Posté le 21-04-2019 à 08:28:04    

Bonjour,
Je suis en train de créer un script web en php pour récupérer les données de ma station météo Netatmo afin de les récupérer par un microcontroleur (arduino) pour les afficher sur des petits écrans lcd (c'est mon projet du moment  :pt1cable: ).
 
Je viens de finaliser les deux scripts php qui récupèrent les données. J'ai utilisé les scripts de l'API fournis par Netatmo, en modifiant et prenant les bouts qu'il me fallait.
 
Pour héberger et tester ces fichiers, j'utilise mon NAS Synology, avec le paquet WebStation que j'ai avec les autres paquets nécessaires, et tout fonctionne bien.
 
J'ai placé mon script dans /Volume2/web/  ainsi que les différents fichiers inclus dans un sous dossier /src/.
Il y a le fichier index.html par défaut à la racine du dossier web, et aucun dans les autres dossiers.
Mon script a un nom particulier, pour l'exemple TOTO-atmo.php.
 
Ma question est : pourquoi lorsque je tape http://ip_lan/dossier/ je n'ai pas la liste du dit-dossier ? Ce n'est pas un problème, loin de là, c'est sécurisé, mais je voudrais savoir ce qui crée cette sécurisation par défaut ?
 
Autre question, plus orientée programmation php. Je défini une variable __ROOT__ ainsi :

Code :
  1. define('__ROOT__', dirname(dirname(__FILE__)) . '/web/');


afin d'avoir le chemin d'accès absolu du script que j'exécute, TOTO-atmo.php.
ma commande retourne alors cette valeur :

/volume2/web/


Mais normalement la commande que j'ai modifiée devait être ainsi (d'après les doc de DEV de Netatmo) :

Code :
  1. define('__ROOT__', dirname(dirname(__FILE__)));


Ce qui retourne celà :

/volume2


J'ai compris (un peu tard et avec un peu de recherche) que la fonction dirname retourne le dossier parent, donc la faire deux fois, retourne le dossier parent au dossier parent, donc ici le /Volume2.
Du coup je pense que le dossier src contenant divers fichiers pour récupérer les données, ne devrait pas se trouver dans le dossier web...
Est-ce que vous pensez que c'est un problème de faire comme j'ai fait ? (sachant que là tout fonctionne bien).
PS : j'ai du placer dans un fichier .php des infos sensibles, comme des ID de connexion afin que le script puisse récupérer les données.
Ce fichier que j'appellerais ici infos.php n'affiche rien lorsque je tape dans le navigateur http://ip_lan/infos.php
Est-ce que son contenu peut-être récupérer et donc que les IDs soient accessibles ? (malgré le fait qu'on ne peut pas lister le contenu du dossier)
Si c'était le cas, faudrait que je trouve une autre solution pour le placer ailleurs... mais là je ne vois pas trop...
 
Merci pour votre aide
++ Miles


---------------
Mes ventes : [FeedBack] http://forum.hardware.fr/hfr/Achat [...] 4599_1.htm
Reply

Marsh Posté le 21-04-2019 à 08:28:04   

Reply

Marsh Posté le 21-04-2019 à 15:29:07    

Bonjour,
 
Je n'ai pas compris grand chose, mais le listing du dossier et le comportement d'un appel au fichier est géré par le serveur et non par PHP.
Ton script PHP renvoie ce que tu lui demandes de renvoyer, si tu ne lui demandes pas de renvoyer quelque chose alors il renverra rien (ton cas actuel). Maintenant, est-ce que quand tu rentres l'adresse le serveur doit exécuter le fichier ou le télécharger, ça c'est géré par la config du serveur.
 
Pour ton problème de dirname, je n'ai rien compris. Tes fichiers tu les mets où tu veux tant que ton arborescence te convient et que tu arrives à les appeler comme tu souhaites. :pt1cable:


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 22-04-2019 à 10:37:29    

bonjour,
Merci pour la réponse.
Donc le listing d'un dossier est lié à une configuration du serveur, donc dans l'état actuel, WebStation ne permet pas de lister le contenu des dossiers, sans faire de scripts PHP dédiés à cela.
Ok. Tu sais où on paramètre ça dans le serveur ? (moi c'est Apache 2.4).
 
Sinon, pour la fonctoin dirname, c'est pas grave :) si le contenu des fichiers php n'est pas accessible directement depuis un navigateur, c'est bon ;)


---------------
Mes ventes : [FeedBack] http://forum.hardware.fr/hfr/Achat [...] 4599_1.htm
Reply

Marsh Posté le 22-04-2019 à 15:28:18    

Paramétrer quoi ? Le lisiting des dossiers ? C'est l'option "Indexes" : https://wiki.apache.org/httpd/DirectoryListings à modifier dans le httpd.conf ou le virtualhost.conf ou le .htaccess (à vérifier pour ce dernier).
Pour ce que doit faire le serveur quand un fichier est appelé c'est un peu plus compliqué :
- https://httpd.apache.org/docs/2.4/handler.html
- https://httpd.apache.org/docs/2.4/m [...] tml#action


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 24-04-2019 à 11:51:40    

Ok merci.
J'ai essayé d'aller voir le httpd.conf de mon serveur, mais j'ai rien vu dedans qui expliquerait pourquoi un dossier ne peut pas être listé quand il n'y a pas de index.html ou équivalent.
Mais bon ça me va que ce ne soit pas listable :)
Merci pour les liens :jap:


---------------
Mes ventes : [FeedBack] http://forum.hardware.fr/hfr/Achat [...] 4599_1.htm
Reply

Marsh Posté le 24-04-2019 à 11:57:03    

Ben soit l'option :

Code :
  1. Options +Indexes


est présente, soit elle ne l'est pas. [:spamafote]


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 24-04-2019 à 12:17:09    

Elle ne l'est pas. Ni même dans d'autre fichiers conf.
 
J'ai ça :

Code :
  1. # TODO: AllowOverride of root directory to All ??
  2. <Directory />
  3.     Options FollowSymLinks
  4.     AllowOverride All
  5. </Directory>


 
mais plus loin je vois qu'il y a  

Code :
  1. Include conf/extra/httpd-autoindex.conf
  2. Include conf/extra/httpd-languages.conf
  3. Include conf/extra/mod_xsendfile.conf
  4. Include conf/extra/mod_rpaf.conf
  5. IncludeOptional sites-enabled/*.conf


 
Et dans le fichier httpd-autoindex.conf j'ai vu ceci :

Code :
  1. #
  2. # IndexOptions: Controls the appearance of server-generated directory
  3. # listings.
  4. #
  5. IndexOptions FancyIndexing HTMLTable VersionSort
  6. # We include the /icons/ alias for FancyIndexed directory listings.  If
  7. # you do not use FancyIndexing, you may comment this out.
  8. #
  9. Alias /icons/ "/var/packages/Apache2.4/target//usr/share/icons/"
  10. <Directory "/var/packages/Apache2.4/target//usr/share/icons">
  11.     Options Indexes MultiViews
  12.     AllowOverride None
  13.     Require all granted
  14. </Directory>


 
et dans sites-enabled/webstation-default.conf il y a ça :

Code :
  1. <Directory "/var/services/web">
  2.     <FilesMatch "\.(php[345]?|phtml)$">
  3.         SetHandler "proxy:unix:/run/php-fpm/php-40e4d6cb-bf06-418d-90cd-57eb892f4be0.sock|fcgi://localhost"
  4.     </FilesMatch>
  5.     Options MultiViews FollowSymLinks ExecCGI
  6.     AllowOverride All
  7.     <IfModule authz_core_module>
  8.         Require all granted
  9.     </IfModule>
  10.     <IfModule dir_module>
  11.         DirectoryIndex index.html index.htm index.cgi index.php index.php5
  12.     </IfModule>
  13. </Directory>


 
Du coup c'est pour ça que le listing n'est pas possible, c'est bien ça ?


---------------
Mes ventes : [FeedBack] http://forum.hardware.fr/hfr/Achat [...] 4599_1.htm
Reply

Marsh Posté le 24-04-2019 à 13:30:43    

Oui, c'est une option qui s'ajoute à la directive Directory. Tu peux donc l'autoriser à plusieurs niveaux de l'arborescence. Tout comme l'autoriser pour toute une arborescence et ensuite l'interdire dans une sous-arborescence.
 
Là je ne connais pas ton arborescence complète et encore moins celle de ta webstation, sachant qu'il y a aussi des aliases, c'est un peu compliqué de trouver la meilleure solution.
Mais si tu précises dans ton httpd.conf le chemin de ton dossier dans une directive directory ça a de bonnes chances de fonctionner.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 24-04-2019 à 13:49:55    

Ok :jap: Merci.
je ne vais rien toucher alors, puisque je ne souhaite justement pas que les dossiers soient listés.
Ça m'arrange.
Je voulais juste vérifier si c'était normal comme comportement ou pas ;)
 
en tout cas, merci du temps que tu as consacré à mes questions  :hello:  :jap:


---------------
Mes ventes : [FeedBack] http://forum.hardware.fr/hfr/Achat [...] 4599_1.htm
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed