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?
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.
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
.
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.
Vous pouvez également refuser des fichiers au format .htaccess.
<Files "composer.json">
Order Allow,Deny
Deny from all
</Files>
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>
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.
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.
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.