如何解决IE Edge不尊重Lambda @ Edge HSTS
我在AWS S3中托管了一个React应用程序。为了帮助保护它,我已经按照AWS指南https://aws.amazon.com/blogs/networking-and-content-delivery/adding-http-security-headers-using-lambdaedge-and-amazon-cloudfront/
实施了Lambda @ EdgeNodejs lambda托管在弗吉尼亚北部:
'use strict';
exports.handler = (event,context,callback) => {
//Get contents of response
const response = event.Records[0].cf.response;
const headers = response.headers;
//Set new headers
headers['strict-transport-security'] = [{key: 'Strict-Transport-Security',value: 'max-age=63072000; includeSubdomains; preload'}];
headers['content-security-policy'] = [{key: 'Content-Security-Policy',value: "default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'"}];
headers['x-content-type-options'] = [{key: 'X-Content-Type-Options',value: 'nosniff'}];
headers['x-frame-options'] = [{key: 'X-Frame-Options',value: 'DENY'}];
headers['x-xss-protection'] = [{key: 'X-XSS-Protection',value: '1; mode=block'}];
headers['referrer-policy'] = [{key: 'Referrer-Policy',value: 'same-origin'}];
//Return modified response
callback(null,response);
};
HSTS标头和从HTTP到HTTPS的重定向在Google Chrome和Firefox中工作正常,但是Internet Explorer Edge不能重定向。它通过HTTP加载页面,并在地址栏旁边显示警告“不安全”。
在Internet Explorer中查看“网络”选项卡,在响应中显示Strict-Transport-Security
标头。我研究的所有内容都表明IE支持HSTS,所以我不确定Edge为什么不重定向到HTTPS而是通过HTTP加载页面。我想防止任何内容通过HTTP加载。
我拥有有效的证书和域,并且所有东西都是通过AWS购买的,并且一切都可以在Firefox和Chrome上正常运行,而不仅仅是IE。
解决方法
我是在CloudFront进行从HTTP到HTTPS重定向的工作的前提下创建的。迈克尔的评论使我回过头来检查我们认为重定向发生的位置。
结果证明CloudFront具有两种行为:
Precedence Pattern Origin Policy
0 * [URL] HTTP and HTTPS
1 Default(*) [URL] Redirect HTTP to HTTPS
我想,即使它是默认设置并通过重定向创建,AWS / Cloudfront还是创建了优先级0,该优先级首先生效并允许HTTP,无法更改优先级顺序,您必须更改行为0也可以将HTTP重定向到HTTPS。
之后,浏览器会记住并使用HSTS。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。