Magento 2:“您的Web服务器设置不正确,并允许未经授权访问敏感文件。请与您的托管服务提供商联系”


18

我的Magento 2开发环境已开始向我戳以下错误消息

您的Web服务器设置不正确,并允许未经授权访问敏感文件。请联系您的主机提供商

有没有人追踪

  1. 正在执行哪些安全检查?
  2. 这些检查在核心代码中的何处发生?

您能告诉我您使用的是哪个版本的2
Amit Bera

@AmitBera由于单个软件包是作曲者的存储库,我不确定如何检查
Alan Storm

1
@AlanStorm,此消息来自Magento\AdminNotification\Model\System\Message\Security课堂。您在哪种情况下收到此消息?
Bojjaiah

@magentotwo当我登录到后端
艾伦·斯托姆

Answers:


12

此检查表明任何人都可以访问app/etc/*文件。例如app/etc/env.php,将凭据存储到DB,密钥和其他资源的文件。

更好的解决方案是将pub文件夹配置为Web根目录,而不是magento2大多数安装文档中指定的默认安装目录(通常是默认安装目录)。这将提高整体安全性并解决您的问题。确保还编辑其他Apache / Nginx位置定义。对于Nginx,$MAGE_ROOT指令应为/var/www/example.com/magento2/pub,您的指令也应为 root。确保也进行更改后刷新缓存,否则图像和css文件将被破坏(系统->工具->缓存管理->刷新Magento缓存)。

\Magento\AdminNotification\Model\System\Message\Security负责此功能。参见_isFileAccessible方法。

这肯定会给Magento商店带来风险。


3

如果使用的是Apache,请确保Web服务器上存在.htaccess/app/文件夹中magento随附的文件,并且已将Apache配置为使用.htaccess文件覆盖每个文件夹的设置,但是默认情况下应启用此功能。

该文件的内容应为:

<IfVersion < 2.4>
    order allow,deny
    deny from all
</IfVersion>
<IfVersion >= 2.4>
    Require all denied
</IfVersion>

1

这是系统消息,此消息来自getText() 方法class Magento\AdminNotification\Model\System\Message\Security

当我们打开管理面板时,控制器会检查所有通知及其相关的安全性。

您可以从中的execute()方法进行调试Magento\AdminNotification\Controller\Adminhtml\System\Message\ListAction.php


有用的信息,但不是我问的。Magento中的一些代码显然运行了一些系统测试并添加了该消息。我想知道这些系统测试在哪里。
艾伦·斯托姆

1

MAGENTO 2 Centos 7服务器

要修复消息“您的Web服务器设置不正确,并允许未经授权访问敏感文件。请与您的主机提供商联系”。

1)### shh-从您的root帐户运行以下命令。###

chown -R accountuser:accountusergroup /path-to-root-folderl/

2)### ssh-从域帐户用户(不是您的Web服务器帐户,如apache等)运行以下命令。###

find . -type d -exec chmod 770 {} \; & find . -type f -exec chmod 660 {} \; && chmod u+x bin/magento

chmod -R g+w /path-to-root-folderl/{pub,var} chmod -R g+w /path-to-root-folderl/{app/etc,vendor} chmod -R g+s pub/static pub/media . find var/generation -type d -exec chmod g+s {} \; find var/session -type d -exec chmod g+s {} \;

3)### ssh-从您的root帐户运行以下命令。###

chown -R domain_account_user:webservergroup /path-to-root-folderl/var chown -R domain_account_user:webservergroup /path-to-root-folder/app/etc chown -R domain_account_user:webservergroup /path-to-root-folderl/pub chown -R webserverUSER:webservergroup /path-to-root-folder/var/session

这将修复此错误和许多其他错误。注意:在使用magento 2时禁用SUPHP,您将省去很多麻烦。目前,我正在使用ea-apache24-mod_cgid和PHP 7和ea-php70-php-fpm运行mod_mpm_event。

在添加PHP-FPM之前,我让我的magento 2仅运行了带有ea-apache24-mod_cgid和PHP 7的mod_mpm_event。

如果您正在运行cpanel / apache,并且不想使用easyapache迁移到mod_mpm_event + ea-apache24-mod_cgid,则可以使用ssh中的shell。从ssh运行下面的命令。yum shell删除ea-apache24-mod_mpm_worker删除ea-apache24-mod_cgi安装ea-apache24-mod_mpm_event安装ea-apache24-mod_cgid运行退出


那只会在某些托管环境中起作用。.对其他人可能真的不是个好主意
Andy

1

就我而言,问题是由default商店视图被禁用的事实引起的。在进行安全检查时,Magento\AdminNotification\Model\System\Message\Security该类尝试下载app/etc/config.php文件,但引发了一个异常(Fatal error: Uncaught Magento\Framework\Exception\NoSuchEntityException: Default store is inactive),该异常将响应代码转换为200(通常应返回404)。因此,系统认为该文件可访问,这意味着安全问题。

只需启用default商店视图即可解决此问题。


1

一个简单的解决方案是,如果您不使用nginx,则在magento安装的根目录中将nginx.conf文件重命名为“ nginx.conf.sample”。这对我有用,并且警告消息在Magento Admin中消失了。


0

我认为这是目录和文件权限问题。请为文件目录0644授予适当的权限,例如0755,如果不能解决问题,请同时检查.htaccess文件。


有用的信息,但不是我要求的信息。我想知道这些检查在Magento核心代码库中的什么地方进行。
艾伦·斯托姆

0

这些测试存在于类中Magento\AdminNotification\Model\System\Message\Security,并且注意文本来自function getText()。我认为magento检查app/etc/*文件的可访问性,并基于此在管理面板中显示警告。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.