Accès en lecture des fichiers *.json

Bonjour,
Dans le fichier htaccess.txt fourni par la distribution de SPIP (<5.0), il y a une règle générique pour empêcher la lecture du fichier composer.json cf. htaccess.txt · 4.4 · spip / spip · GitLab

Mais en fouillant un peu, je constate qu’on a accès à tous les autres composer.json des plugins du core de SPIP (ex: https://www.spip.net/ecrire/composer.json)
La liste peut s’allonger : phpstan.neon.dist, phpstan-baseline.neon, phpunit.xml.dist, phpcs.xml.dist, */tests/*.php (ceux là font une erreur 500 sur le serveur. Ex: https://www.spip.net/plugins-dist/archiviste/tests/bootstrap.php, https://www.spip.net/plugins-dist/archiviste/tests/AbstractArchiverTest.php).
Un peu plus gênant aussi : plugins-dist.json est accessible en lecture sur tous les sites. (ex: https://www.spip.net/plugins-dist.json)

Personnellement, je trouverai logique que tous les fichiers donnant une information « critique » sur la version d’un site soient interdits d’accès. C’est un grand sujet, je sais. :wink:

J’ai besoin de vos conseils sur le sujet. Quels fichiers à garder en lecture ? Quelles règles à mettre en place dans mon fichier .htaccess ?

Merci pour votre aide.

Si tu ne connais pas encore local/config.txt tu vas te faire peur :stuck_out_tongue:

:joy:
Je ne voulais pas le citer…

Et donc, pour en revenir au « problème » initial avec spip.net, c’est normal car je déploie le site avec checkout qui comme son nom l’indique fait une installation par git. Si tu testes sur un site installé par spip_loader, par zip tu n’auras pas ces fichiers sur le serveur.

Je n’installe pas mes sites sur spip_loader.php (du moins pas ceux que j’ai en tête). Ils sont installés par le biais de spip-cli avec docker IPEOS/spip.

Edit : Si je comprends bien, le générateur du zip de la distribution de SPIP enlève des fichiers. Peux-tu me redonner le lien vers ce générateur stp ? Je l’étudierai pour ma problématique.

Le générateur peut être une commande composer cf Composer : la commande `create-project` ou un des outils utilisées lors des releases par la team maintenance cf Préparer Release et donc l’outil Magraine / spip-archives · GitLab

1 « J'aime »

spip-archives est désormais ici spip-contrib-outils / Spip Archives · GitLab

Ainsi que spip-releases spip-contrib-outils / Spip Releases · GitLab

J’ai une autre remarque : compenser l’accès ou l’interdiction d’accès de fichiers par le web avec un fichier .htaccess, c’est un pis-aller :

  • ça ne marche que si spip est exposé via un serveur apache httpd, mais pas nginx, ni un autre.
  • il faut que ce serveur apache soit configuré pour que .htaccess soit lu et évalué. Quand c’est actif, il est évalué à chaque requête http, ce qui n’est pas très bon pour les perfs.
  • spip expose tous ses fichiers sur le web parce qu’il est conçu comme ça : le point d’entrée d’un site public (spip.php) étant à la racine du projet. @marcimat l’a évoqué dans le passé, avec un sous-dossier public/, on aurait moins ce genre de problème à régler. Mais on en aurait d’autres ! :wink:

@Ybbet, je pense que, étant données les spécificités de tes installations, le mieux serait pour toi de mettre le contenu du htaccess fourni par spip et d’ajouter des règles de sécu dans la conf apache directement … et tes retours là-dessus seront les bienvenus.

Sinon, autre chose, il semble que les tests unitaires du plugin archiviste soient bien présents dans le zip spip de la dernière release. Ils sont pourtant ignorés dans le fichier .gitattributes .gitattributes · 2.2.3 · spip / archiviste · GitLab. Ce serait bien qu’on regarde ça avant la release 4.4.6 ?

C’est une question pour l’équipe @maintenance ça :slight_smile:

bug release avec dossier tests/ ? :wink:

Note que le projet est sur la zone spip-contrib-outils / Spip Archives · GitLab depuis quelques temps déjà

Ouep, @JamesRezo le signalait plus haut, je viens de mettre à jour la page de contrib à ce sujet :wink:

Désolé pour ma réponse tardive.

Merci pour vos pistes. Je vais regarder un peu cela.
@JamesRezo on est sur le même constat en interne. .htaccess a ses limites, on passe par la conf apache.
Il faut qu’on voit pour les règles à mettre en place pour les exclusions. Il ne faudrait pas qu’on interdise un fichier auquel SPIP a besoin pour son bon fonctionnement.