繁体   English   中英

如何隐藏配置文件以防止直接访问?

[英]How to hide config files from direct access?

我正在将 Laravel 用于网络应用程序。 上传了生产中的所有内容,发现某些文件可以通过 url 直接访问 - 例如http://example.com/composer.json

如何避免直接访问?

您使用了错误的 Web 服务器配置。 将您的 Web 服务器指向public目录并重新启动它。

对于Apache,您可以使用这些指令:

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

对于nginx ,您应该更改此行:

root /path_to_laravel_project/public;

这样做之后,浏览器将无法再访问所有 Laravel 文件。

那是不正确的。 composer.json位于public目录之外,因此不应该被访问。 这意味着您的 VirtualHost 配置不正确。

请确保您的目录路径以/public结尾。

将 Web 服务器指向项目根文件夹中的公共目录

project root folder/public

但是如果您没有 public 文件夹并且您已经指向根文件夹,您可以通过在.htaccess文件中编写以下代码来拒绝访问。

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

在上面的代码中,首先我们拒绝所有并只允许从自己的服务器(本地主机到服务器)执行,因此我们可以保护它免受外部用户的攻击。

将您的 Web 服务器指向公共目录并重新启动它。

对于 Apache,您可以使用这些指令:

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

您也可以拒绝 .htaccess 中的文件。

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

对于多个文件,您可以在 .htaccess 文件中多次添加上述文件标签。

将您的文档根目录设置为public目录,这样其他文件将无法直接访问。 在你的 apache/nginx/??? 中寻找它配置文件。

这取决于您运行的网络服务器。 对于 Apache,它将是 .htaccess 文件,而对于 Nginx,它将在服务器配置文件中处理。

您也可以拒绝 .htaccess 中的文件。

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

使用 Apache,您可以在 Laravel 项目的根目录下创建 .htaccess 文件,将所有请求重写到 public/ 目录。

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

简单地创建空白

索引.php

配置目录中的文件,并在文件中写入消息以通知访问者用户

例如。 服务器禁止访问

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM