Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1879 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°2332158
MilesTEG1
Posté le 21-04-2019 à 08:28:04  profilanswer
 

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
mood
Publicité
Posté le 21-04-2019 à 08:28:04  profilanswer
 

n°2332166
MaybeEijOr​Not
but someone at least
Posté le 21-04-2019 à 15:29:07  profilanswer
 

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.
n°2332186
MilesTEG1
Posté le 22-04-2019 à 10:37:29  profilanswer
 

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
n°2332190
MaybeEijOr​Not
but someone at least
Posté le 22-04-2019 à 15:28:18  profilanswer
 

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.
n°2332271
MilesTEG1
Posté le 24-04-2019 à 11:51:40  profilanswer
 

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
n°2332272
MaybeEijOr​Not
but someone at least
Posté le 24-04-2019 à 11:57:03  profilanswer
 

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.
n°2332277
MilesTEG1
Posté le 24-04-2019 à 12:17:09  profilanswer
 

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
n°2332291
MaybeEijOr​Not
but someone at least
Posté le 24-04-2019 à 13:30:43  profilanswer
 

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.
n°2332294
MilesTEG1
Posté le 24-04-2019 à 13:49:55  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

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

 

Sujets relatifs
Trier un fichier traceEnvoyer un message après le send d'une fichier via socket
Code alpha numérique automatiqueDécalage dans un fichier txt
Problème code pour un lecteur radio en html5Encodage d'un fichier jpeg via Ajax
Code (chatbot) incomprisFichier XML / Base de donnée
Recherche dans le code source[PYTHON] Stocker du code dans une base de données
Plus de sujets relatifs à : Code fichier php est-il accessible depuis un navigateur ? Protection ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR