web-dev-qa-db-fra.com

Comment cacher les fichiers de configuration de l'accès direct?

J'utilise Laravel pour une application Web. Tout téléchargé sur la production et a découvert que certains fichiers peuvent être directement accédés par url - par exemple http://example.com/composer.json

Comment éviter cet accès direct?

16
Yasen Ivanov

Vous utilisez une mauvaise configuration de serveur Web. Pointez votre serveur Web sur un répertoire public et redémarrez-le.

Pour Apache vous pouvez utiliser ces directives:

DocumentRoot "/path_to_laravel_project/public"
<Directory "/path_to_laravel_project/public">

Pour nginx , vous devriez changer cette ligne:

root /path_to_laravel_project/public;

Après cela, tous les fichiers Laravel ne seront plus accessibles à partir du navigateur.

30
Alexey Mezenin

C'est faux. composer.json est situé en dehors du répertoire public et ne doit donc pas être accessible. Cela signifie que votre configuration VirtualHost est incorrecte.

Assurez-vous que votre chemin d'accès à votre répertoire se termine par /public.

2
Ohgodwhy

Pointez le serveur Web vers le répertoire public du dossier racine du projet.

project root folder/public

mais si vous n'avez pas le dossier public et que vous pointez déjà vers le dossier racine, vous pouvez refuser l'accès en écrivant le code suivant dans le fichier .htaccess.

<Files ".env">
Order Allow,Deny
Deny from all
Allow from 127.0.0.1
</Files>

dans le code ci-dessus, tout d'abord, nous refusons tout et n'autorisons que le serveur propre (localhost au serveur) à s'exécuter, et nous pouvons donc le protéger des utilisateurs extérieurs.

1
Reiah Paul Sam

Vous pouvez également refuser des fichiers au format .htaccess.

<Files "composer.json">
Order Allow,Deny
Deny from all
</Files>
0
Crysis

Avec Apache, vous pouvez créer un fichier .htaccess dans le répertoire racine du projet Laravel pour réécrire toutes les demandes dans le répertoire public /.

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
0
Amr El-Naggar

Définissez la racine de votre document sur le répertoire public afin que les autres fichiers ne soient pas directement accessibles. Cherchez-le dans votre Apache/nginx/??? fichiers de configuration.

0
Giedrius Kiršys

Cela dépend du serveur Web que vous utilisez. Avec Apache, il s'agirait de fichiers .htaccess, alors que sous Nginx, ce serait géré dans le fichier de configuration du serveur. 

0
farmio

Pointez votre serveur Web vers un répertoire public et redémarrez-le.

Pour Apache, vous pouvez utiliser ces directives:

DocumentRoot "/path_to_laravel_project/public"
<Directory "/path_to_laravel_project/public">

Aussi, vous pouvez refuser les fichiers en .htaccess aussi.

<Files "composer.json">
Order Allow,Deny
Deny from all
</Files>

pour plusieurs fichiers, vous pouvez ajouter des fichiers ci-dessus baliser plusieurs fois dans des fichiers .htaccess.

0
Abhijeet Navgire