升级到 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
文件,最后一个错误仍然存在。我添加了<FilesMatch ".+\.php\.+"> RemoveHandler .php ForceType text/plain</FilesMatch>
来修复它。
正则表达式不匹配,应该是.+\.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 后,消息触发重新排队和投递?