升级到 9.5.17 后的安全消息

Posted

技术标签:

【中文标题】升级到 9.5.17 后的安全消息【英文标题】:security message after upgrade to 9.5.17 【发布时间】:2020-08-28 18:32:46 【问题描述】:

升级到 9.5.17 后,我在报告中收到以下安全消息:

服务器对静态文件的响应:

www.mydomain.de/typo3temp/assets/43cd7f07.tmp/2500f854.html.wrong
   unexpected content-type text/html
www.mydomain.de/typo3temp/assets/43cd7f07.tmp/2500f854.1.svg.wrong
   unexpected content-type image/svg+xml
www.mydomain.de/typo3temp/assets/43cd7f07.tmp/2500f854.php.wrong
   unexpected content PHP content
www.mydomain.de/typo3temp/assets/43cd7f07.tmp/2500f854.php.txt
   unexpected content PHP content

这是什么意思?

我检查了文件夹 /typo3temp/assets/ - 没有文件夹 43cd7f07.tmp

谢谢!

【问题讨论】:

可能是加密密钥之类的东西(只是猜测),不确定 这些文件是临时创建的,并在报告模块(和安装工具)中的检查完成后被删除 - 这就是为什么您不再在文件系统中找到它们的原因... 【参考方案1】:

您收到的错误消息是已集成到最新 TYPO3 v9.5.17 和 v10.4.2 版本中的安全功能的一部分,请参阅https://docs.typo3.org/c/typo3/cms-core/master/en-us/Changelog/9.5.x/Feature-91354-IntegrateServerResponseSecurityChecks.html

基本上就是说你当前的服务器系统

正在评估像 test.php.txt.php 不在文件名末尾)之类的文件仍然作为 PHP 内容 - 这可能会导致安全漏洞,以防有人设法上传类似文件(可能被视为 @987654327 @ 文件,但实际上是可执行的 PHP 代码) 可能远程代码执行 提供像test.html.wrong.html不在文件名末尾)之类的文件仍然是text/html,这会触发浏览器执行HTML标签和潜在的危险<script>标签 可能是跨站点脚本

呼吁采取行动

如果这是一个实时和生产服务器,您应该调整您的网络服务器配置。

解决方法是将那些 web 服务器 mime 类型映射限制为仅具有例如的文件。 .html 在最后,就像这个例子中的 Apache HTTP Web 服务器一样

<FilesMatch ".+\.html?$">
    AddType text/html .html .htm
</FilesMatch>

在https://docs.typo3.org/m/typo3/reference-coreapi/10.4/en-us/Security/GuidelinesAdministrators/Index.html#file-extension-handling服务器管理员的 TYPO3 安全指南中查找更多详细信息和解释


2020 年 5 月 17 日更新

https://gist.github.com/ohader/11d737de95895f8ca16495a8b7001c45 包含如何调整 .htaccess 文件的示例,以防在(共享)托管环境中无法更改设置。

<IfModule mod_mime.c>
    RemoveType .html .htm
    <FilesMatch ".+\.html?$">
        AddType text/html .html
        AddType text/html .htm
    </FilesMatch>

    RemoveType .svg .svgz
    <FilesMatch ".+\.svgz?$">
        AddType image/svg+xml .svg
        AddType image/svg+xml .svgz
    </FilesMatch>

    RemoveHandler .php
    <FilesMatch ".+\.php$">
        # IMPORTANT: `php-fcgid` is using in THIS example
        # Most probably is different for each individual configuration
        SetHandler php-fcgid
        # SetHandler php-script
        # SetHandler application/x-httpd-php
    </FilesMatch>
</IfModule>

使用phpinfo(); 并搜索$_SERVER[REDIRECT_HANDLER] 为上面的示例识别了当前处理程序标识符php-fcgid

$_SERVER['REDIRECT_HANDLER'] php-fcgid

【讨论】:

哇,多么好的答案!非常感谢! 不能将前 2 个块(.html、.svg)添加到 ./src/public/typo3/sysext/install/Resources/Private/FolderStructureTemplateFiles/root-htaccess 吗?这样新创建的网站就可以了。 可能...但请使用forge.typo3.org/projects/typo3cms-core/issues 报告错误和更改请求。 使用此配置,对于仍由 PHP 解析的 *.php.wrong 文件,最后一个错误仍然存​​在。我添加了&lt;FilesMatch ".+\.php\.+"&gt; RemoveHandler .php ForceType text/plain&lt;/FilesMatch&gt; 来修复它。 正则表达式不匹配,应该是.+\.php\..+.在最后一个+之前)【参考方案2】:

对于共享主机,很难找到正确的 php 处理程序。

1&1 Ionos 的一些特色,对于这个特定的共享主机包来说甚至可能是特别的:

与 php 7.3 共享主机(在 phpinfo 中确认),但 $_SERVER['REDIRECT_HANDLER'] 给出“x-mapp-php5”(不知道为什么,可能是主机运行多年并升级到 php 7 他们不知何故给它起了别名)

对我来说可行的解决方案是:

<IfModule mod_mime.c>
    RemoveType .html .htm
    <FilesMatch ".+\.html?$">
        AddType text/html .html
        AddType text/html .htm
    </FilesMatch>

    RemoveType .svg .svgz
    <FilesMatch ".+\.svgz?$">
        AddType image/svg+xml .svg
        AddType image/svg+xml .svgz
    </FilesMatch>

    RemoveHandler .php
    RemoveType .php
    <FilesMatch ".+\.php$">
        AddType x-mapp-php5 .php
        AddHandler x-mapp-php5 .php
    </FilesMatch>
</IfModule>

我必须删除两个处理程序/类型并在文件匹配中再次添加它们。 我花了很长时间才完成这项工作,希望这会有所帮助。

对于欧洲主机 $_SERVER['REDIRECT_HANDLER'] 为空,php7.4:

<IfModule mod_mime.c>

    ....

    RemoveHandler .php
    RemoveType .php
    <FilesMatch ".+\.php$">
        # only this handler seems to work
        AddType application/x-httpd-php .php
        AddHandler application/x-httpd-php .php
    </FilesMatch>
</IfModule>

【讨论】:

【参考方案3】:

这是一些 Domainfactory 的特产。

注意ForceType 指令(在此处设置您的特定 PHP 版本)。如果不使用,其网络服务器仍将使用 mimetype-sniffing。

用于最新的.htaccess 模板(10.4、9.5)的底部,其中已经包含对.svg[z]/.htm[l] 的严格处理

# DomainFactory-special:
# 1) remove mimetype-sniffing anything for PHP
# 2) force PHP 7.3 mimetype on .php files
<IfModule mod_mime.c>
    RemoveType .php
    <FilesMatch ".+\.php$">
        ForceType application/x-httpd-php73
    </FilesMatch>
</IfModule>

【讨论】:

【参考方案4】:

ALL-INKL.COM 的支持团队向我推荐了以下解决方案。 我不得不联系他们,因为删除语句 (RemoveHandler .php) 不起作用。

<FilesMatch "\.(php[0-9,x]*|phtml)\.">
  SetHandler text/plain
</FilesMatch>

感谢 ALL-INKL.COM-Support-Team

【讨论】:

【参考方案5】:

这适用于 JWEILAND、WEBGO 和 PHP:

<IfModule mod_mime.c>
  RemoveHandler .php
  RemoveType .php  
  <FilesMatch ".+\.php$">
     SetHandler application/x-httpd-php
     AddType application/x-httpd-php .php
     AddHandler application/x-httpd-php .php
  </FilesMatch>
</IfModule>

【讨论】:

【参考方案6】:

你好,我也添加了

    RemoveType .html .htm
<FilesMatch ".+\.html?$">
    AddType text/html .html
    AddType text/html .htm
</FilesMatch>

RemoveType .svg .svgz
<FilesMatch ".+\.svgz?$">
    AddType image/svg+xml .svg
    AddType image/svg+xml .svgz
</FilesMatch>

RemoveHandler .php
<FilesMatch ".+\.php$">
    SetHandler php72-cgi
</FilesMatch>

但仍然有一个仍然存在

/typo3temp/assets/39b0efab.tmp/fd35fce3.php.wrong
unexpected content PHP content

处理程序来自 phpinfo()

【讨论】:

以上是关于升级到 9.5.17 后的安全消息的主要内容,如果未能解决你的问题,请参考以下文章

从 3.1 升级后的 .NET Core 5.0 Azure 部署 CORS 问题

RabbitMQ 升级到 3.8 后,消息触发重新排队和投递?

RabbitMQ 升级到 3.8 后,消息触发重新排队和投递?

RabbitMQ 升级到 3.8 后,消息触发重新排队和投递?

升级到 Xcode7 后现有项目中的警告消息

添加新消息后的 Proto2 编码/解码问题