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

时间:2016-05-29 07:12:25

标签: php laravel .htaccess access

我正在使用Laravel for web app。上传了生产中的所有内容,发现某些文件可以通过网址直接访问 - 例如http://example.com/composer.json

如何避免直接访问?

10 个答案:

答案 0 :(得分:31)

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

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

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

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

root /path_to_laravel_project/public;

执行此操作后,将无法再从浏览器访问所有Laravel文件。

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

project root folder/public

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

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

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

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

答案 7 :(得分:0)

将您的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文件中多次添加上述文件标记。

答案 8 :(得分:-1)

只需创建空白

  

的index.php

在config目录中的文件,并在文件中写入消息,以通知acccessor用户

离。按服务器访问forbindon

答案 9 :(得分:-1)

对于Apache 2.4或更高版本,请使用

<Files "web.config">  
  Require all denied
</Files>