- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是一名运维人员,我正在建立一个需要实现安全 header 的网站。
我已经使用我需要的 header 创建了一个 Lambda@Edge 函数,它工作正常,但我想为 style-src 添加一个随机数,因为我们正在调用外部 URL(谷歌字体等)。我发现的大多数指南只使用“self”而不使用其他 URL。 SO 上还有一个关于此的问题,但响应不起作用,因为我使用的是 Origin Request 而不是 Origin Response。
我可以将它添加到 Lambda@Edge 函数吗?我有一些生成随机数的 nodejs 代码,但是当我尝试将它添加到 style-src 部分时,它会忽略它。我不懂 JS,所以这对我来说很难解决。
如果这不是正确/最佳方法,我愿意接受任何将随机数与 CSP 和 Lambda@Edge 结合使用的方法。
这是我的 Lambda@Edge 代码。
'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 'self'; frame-ancestors 'none'; connect-src https://dev.example.io https://api.exampleapi.io; img-src 'self' data: https://examplebucket.s3.region.amazonaws.com; script-src 'self'; font-src 'self' https://fonts.example.com; style-src 'self' https://fonts.example.com; 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);
};
这是我用于生成随机数的代码,可以在本地运行。
const crypto = require('crypto');
let nonce = crypto.randomBytes(16).toString('hex');
最佳答案
我注意到,当您使用 CloudFront 事件 Origin Request 或 Origin Response 作为 lambda@edge 函数的触发器时,您只会在这种情况下生成随机数如果有缓存未命中。但据我了解,每个 HTTP 请求都需要一个随机数。这表明您需要使用其他事件之一(查看器请求或查看器响应),但另一方面这会为每个 HTTP 请求触发您的函数(无论您请求的对象是否在缓存中),什么可能对您网站的访问量产生高额成本。
AWS 在此处详细描述了所有 CloudFront 事件: CloudFront Events That Can Trigger a Lambda Function
您在这里没有提到的一件事是,不仅需要为 CSP header 生成随机数,还需要将随机数添加到您的 HTML 页面(例如,通过将所有 <script>
标记替换为 <script nonce="r@nd0m">
。它是可以在 lambda@edge 函数中执行此操作,方法是从 S3 存储桶中读取所需的对象并如上所述替换所有脚本标签。但是您需要了解 AWS lambda@edge 限制(例如,响应的大小是由 Lambda 函数生成)。在此处检查限制:Restrictions on using Lambda functions with CloudFront
我已经找到了在使用随机数创建 CSP 时不使用 lambda@edge 函数的解决方案。因此,您不使用 lambda@edge,例如将 API 网关与 Lambda 结合使用。看这里(尝试 3:Route53、CloudFront、S3、API 网关、Lambda):My experience getting an A+ from Mozilla’s Observatory tool on AWS
关于javascript - 将带有随机数的 CSP header 添加到 Lambda Edge,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63178621/
当我读这本书 -- 人工智能(一种现代方法)时,我遇到了以下描述将 n 元约束搜索问题转换为二进制问题的方法的句子: Another way to convert an n-ary CSP to a
我的Web应用程序(JS部分)需要在加载之前由服务器配置。现在它是通过以下方式完成的: var configObj = { setting1: "blah", setting2: {val1: 1,
作为开发人员,我应该为windows提供什么智能卡登录功能?只有微型驱动程序 + 现有的基础智能卡 csp 工作吗或者,如果我开发了一个完整的 CSP,我可以让智能卡登录正常工作吗? 最佳答案 你应该
在一些 css 文件中嵌入一些 base64 字体,但 CSP 阻止了这些:类似于 url("data:font/woff;base64,d09GRk9UVE...); 当前 CSP =“base-u
CSP的理念:以通信的方式来共享内存 不要通过共享内存来通信,而要通过通信来实现内存共享。这就是 Go 的并发哲学,它依赖 CSP 模型,基于 channel 实现。Go 一开始就把 CSP 的思想融
比赛链接 A.玩水 (water) 签到。发现如果要找两条路径的话,能找到的充要条件是存在一个点的上方和左方的字母相同。(即使两条走过的点截然不同的路径也符合,这时终点会成为这个点)。 即存在一
在上一篇博客我们主要总结了XSS攻击,本篇博客主要总结内容安全策略CSP的相关内容。 一、定义 内容安全策略(CSP),是一种安全策略,其原理是当浏览器请求某一个网站时,告诉该浏览器申明文件可以执行,
我正在开发一个 Flask 应用程序,它使用 Flask-Talisman 来合并一个 CSP。我想在我的模板之一中创建一个内联脚本,而不是将“unsafe-inline”添加到 CSP 的“scri
我注意到 GitHub 和 Facebook 现在都在实现这项政策,这限制了第三方脚本在他们的体验/站点中运行。 有没有办法使用 检测文档是否针对 CSP 运行? JavaScript ? 我正在编写
我一直在努力寻找最好的管理访问权限的方法,并允许我们的技术人员访问我们的客户订阅和 Azure 资源,而不给予他们作为每个订阅的贡献者或类似权利的明确权利。 现在我遇到了权限身份管理功能( https
我正在学习内容安全策略。 假设我的网站 abc.com 有以下 csp: default-src 'self' 'unsafe-inline' 'unsafe-eval' xyz.com 这是否意味着
我一直在努力寻找最好的管理访问权限的方法,并允许我们的技术人员访问我们的客户订阅和 Azure 资源,而不给予他们作为每个订阅的贡献者或类似权利的明确权利。 现在我遇到了权限身份管理功能( https
我了解使用 CSP 的好处,但是发送这些 header 用于 HTML 文件以外的任何内容是否浪费?例如,我是否需要在图像上发送 CSP header ?对于 .js 文件? 最佳答案 Content
Closed. This question needs to be more focused。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题
有许多用于 JavaScript 的图表绘制库,例如 Chart.js 或 Chartist.js。但是,我们无法找到任何适用于严格 CSP-Mode 的库。 .我们测试的所有库都使用 eval 或默
如何获取已连接智能卡的 CSP 提供商名称? 我无法访问注册表窗口,因此我找到了通过 win API 获取该信息的方法。 我已经看过有关 SCardGetCardTypeProviderName 的内
我正在编写一个使用智能卡进行 xml 签名的简单程序。 示例代码: var cspParams = new CspParameters(1, "Microsoft Base Smart Card Cr
我正在尝试编写自己的 CSP。我正在尝试通过实现一个 dll 文件来做到这一点,但我不确定我的方法是否正确。 我发现了这样的东西:加密服务提供商开发人员工具包 (CSPDK) 有 CSP API 的示
下册开学期末+CSP-J游记 Day -14 期末 Day -7 今天家长会,老师公布成绩 /fn/fn/fn。政治和历史考废了,然后其他都挺好。 语文 \(101\
当我从 TFS 服务器运行构建时,出现以下错误:无法导入以下 key 文件:C:\TfsData\Build_work\fa450055\EXChecker 2015\signingKey.pfx。
我是一名优秀的程序员,十分优秀!