ttf和woff文件未使用HSTS

时间:2018-10-29 13:27:26

标签: php networking yii2 hsts

在我的项目中,启用了HSTS。因此,如果有人尝试通过HTTP使用该站点,那么它将重定向到HTTPS。

在安全扫描之后,报告ttf,woff和woff2文件正在忽略HSTS。

示例1:

在Google Crome上,如果我尝试使用以下URL,则它将重定向到HTTPS:

http://example.com/backend/web/lib/roboto/Roboto-Light.woff2然后

重定向到

https://example.com/backend/web/lib/roboto/Roboto-Light.woff2

如果我在Firefox上尝试相同的操作,那么它只是通过HTTP下载了Roboto-Light.woff2文件,而不是重定向到HTTPS。

示例2:

如果我在谷歌浏览器和Firefox上都尝试使用URL,则只需下载文件即可。

http://example.com/backend/web/lib/roboto/Roboto-Black.ttf

那我该怎么做才能解决此问题?

更新

访问以下URL后的网络日志:

http://example.com/backend/web/lib/roboto/Roboto-Black.ttf

enter image description here

enter image description here

似乎第一个文件是通过访问HTTP URL加载的。但是并不确定在浏览器的地址栏中是否更新https。

VHOST设置

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ServerName example.com

    RewriteEngine on
    RewriteCond %{HTTP:X-Forwarded-Proto} ^http$
    RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    #RewriteCond %{HTTPS} !=on
    #RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

    RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)
    RewriteRule .* - [F]

    Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains;"

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

1 个答案:

答案 0 :(得分:1)

您需要返回并询问安全扫描人员为什么他们认为是这种情况。

您清楚地表明已为字体文件设置了HSTS。 您所在的区域还表明您出于HSTS原因正确显示了307内部重定向。

这就是它应该起作用的方式。您会在Chrome的“网络”标签中收到两个请求(其他浏览器可能有所不同):

  1. 伪造的307响应,将请求从HTTP升级到HTTPS。这是由浏览器创建的,HTTP请求永远不会到达服务器。因此,为什么我称其为“假”共鸣。
  2. 实际请求通过HTTPS发送。

下载字体后,很难确定是通过HTTPS下载的,除非查看“网络”标签-很好。

  

如果我在Firefox上尝试相同的操作,那么它只是通过HTTP下载了Roboto-Light.woff2文件,而不是重定向到HTTPS。

您怎么知道的?您确定已通过HTTPS访问该站点以获取HSTS标头吗?第一个请求很可能是通过HTTP发出的(尽管您已经有了标准的重定向,因此应该将其重定向到HTTPS然后下载),但在此之后,它应该在发送请求之前自动重定向。

  

如果我在谷歌浏览器和Firefox上都尝试使用URL,则只需下载文件即可。

可能是这样。但是重定向之后。

  

似乎第一个文件是通过访问HTTP URL加载的。但是并不确定在浏览器的地址栏中是否更新https。

否,如前所述,第一个请求是虚拟请求。第二个是实际发送到浏览器的实际请求。字体文件立即下载,因此它对URL栏没有任何作用。