在我的项目中,启用了HSTS。因此,如果有人尝试通过HTTP使用该站点,那么它将重定向到HTTPS。
在安全扫描之后,报告ttf,woff和woff2文件正在忽略HSTS。
在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。
如果我在谷歌浏览器和Firefox上都尝试使用URL,则只需下载文件即可。
http://example.com/backend/web/lib/roboto/Roboto-Black.ttf
那我该怎么做才能解决此问题?
访问以下URL后的网络日志:
http://example.com/backend/web/lib/roboto/Roboto-Black.ttf
似乎第一个文件是通过访问HTTP URL加载的。但是并不确定在浏览器的地址栏中是否更新https。
<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>
答案 0 :(得分:1)
您需要返回并询问安全扫描人员为什么他们认为是这种情况。
您清楚地表明已为字体文件设置了HSTS。 您所在的区域还表明您出于HSTS原因正确显示了307内部重定向。
这就是它应该起作用的方式。您会在Chrome的“网络”标签中收到两个请求(其他浏览器可能有所不同):
下载字体后,很难确定是通过HTTPS下载的,除非查看“网络”标签-很好。
如果我在Firefox上尝试相同的操作,那么它只是通过HTTP下载了Roboto-Light.woff2文件,而不是重定向到HTTPS。
您怎么知道的?您确定已通过HTTPS访问该站点以获取HSTS标头吗?第一个请求很可能是通过HTTP发出的(尽管您已经有了标准的重定向,因此应该将其重定向到HTTPS然后下载),但在此之后,它应该在发送请求之前自动重定向。
如果我在谷歌浏览器和Firefox上都尝试使用URL,则只需下载文件即可。
可能是这样。但是重定向之后。
似乎第一个文件是通过访问HTTP URL加载的。但是并不确定在浏览器的地址栏中是否更新https。
否,如前所述,第一个请求是虚拟请求。第二个是实际发送到浏览器的实际请求。字体文件立即下载,因此它对URL栏没有任何作用。