我正在使用Laravel for web app。上传了生产中的所有内容,发现某些文件可以通过网址直接访问 - 例如http://example.com/composer.json
如何避免直接访问?
答案 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>