Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >快件/ CSP / ejs /内联-脚本& NONCES:如何?

快件/ CSP / ejs /内联-脚本& NONCES:如何?
EN

Stack Overflow用户
提问于 2022-01-31 02:41:37
回答 1查看 668关注 0票数 0

,我想做的是:

1.)使用快件-csp-标头生成一个名为

2.)将生成的当前内容注入.ejs模板

3.)使用该值允许在模板内插入一个内联脚本。

,这是实际发生的事情(据我所知):

1.)现在生成

2.)成功传递给“index.ejs”,然后转发给“head.ejs”

3.)模板('index.ejs')被呈现,并且由于静态资产被请求,生成一个新的NONCE (或几个非new ).

4.),它使传递给模板的时间无效。

,以下是我目前正在做的事情:

代码语言:javascript
运行
AI代码解释
复制
// server.js
const { expressCspHeader,NONCE } = require("express-csp-header");

app.use(
    expressCspHeader({
        directives: {
            "script-src": [
                SELF,
                [NONCE],
            ],
        },
    })
);

// middleware to log the current NONCE attached to the 'request object'
app.use(function (req, res, next) {
    console.log(" ---------------------------------> NONCE", req.nonce);
    next();
});

app.get("/", (req, res) => {
console.log("app.get('/')");
console.log("passed NONCE to '/' route: ------> ", req.nonce);
res.render("pages/index", {
  nonce: req.nonce,
  });
});
代码语言:javascript
运行
AI代码解释
复制
<!-- index.ejs -->
<!DOCTYPE html>
<html lang="en">
    <head>
    <!-- Passing the received NONCE to 'head.ejs' -->
    <%- include ("../partials/head.ejs", {nonce: nonce}) %>
    </head>
    <body>
    </body>
</html>
代码语言:javascript
运行
AI代码解释
复制
<!-- head.ejs -->
<title>Title</title>
<% console.log("head.ejs: received NONCE:   ------>", nonce) %>
<!-- My Inline Script -->
<script nonce='<%= nonce %>'>
  console.log("I am an inline script!")
</script>

<!-- more CSS -->
<link rel="stylesheet" href="../../static/css/global/header.css" />
<link rel="stylesheet" href="../../static/css/global/footer.css" />

当我使用 摩根 记录所有请求时,我的问题变得很明显:

代码语言:javascript
运行
AI代码解释
复制
---------------------------------> generated NONCE:  7CpDuxCZCSrRfmNCVBnkUg==
app.get('/')
passed NONCE to '/' route: ------>  7CpDuxCZCSrRfmNCVBnkUg==
head.ejs: received NONCE:   ------> 7CpDuxCZCSrRfmNCVBnkUg==
GET / 200 30.562 ms - -
---------------------------------> generated NONCE:  fpcpM9o/Ab3g5bSUmymAOg==
---------------------------------> generated NONCE:  5ElxDy+WboVga1We5L/v1g==
GET /static/css/global/header.css 304 4.227 ms - -
GET /static/css/global/footer.css 304 2.141 ms - -

那么我该如何解决这个问题呢?感谢读过这篇文章的人,非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2022-01-31 04:23:06

,这是真正发生的事情:

1.)非test正在工作,我只是没有在常规的脚本上测试它们,而是在一个有其他CSP问题的脚本上测试它们,而不是一个无效的当前脚本。

2.)我不知道Express静态文件夹是如何工作的,这导致了一个糟糕的请求流。线:app.use("/static", express.static(path.resolve(__dirname, "static")));

位于“Express CSP报头”中间件之上。因此,对/static中的文件的每个GET请求首先运行在CSP-中间件中,然后才提供静态资产。下面是将'express.static‘线移动到链上的前后的日志。

在此之前:

代码语言:javascript
运行
AI代码解释
复制
Before Express CSP Header Middleware
-------------------------------------------> generated NONCE:  Y8fG4FXkWGCa66b4DNNtOw==
app.get('/')
passed NONCE to '/' route: ------>  Y8fG4FXkWGCa66b4DNNtOw==
head.ejs: received NONCE:   ------> Y8fG4FXkWGCa66b4DNNtOw==
GET / 200 35.642 ms - -
Before Express CSP Header Middleware
-------------------------------------------> generated NONCE:  TnaEqWMKHwRNG5LyP/4YFA==
GET /static/css/global/header.css 304 2.280 ms - -
Before Express CSP Header Middleware
-------------------------------------------> generated NONCE:  RGJrqm3qZspjUHKlMagm5Q==
Before Express CSP Header Middleware
-------------------------------------------> generated NONCE:  rHO67xdswBY9N4wBDfoyFg==
Before Express CSP Header Middleware
-------------------------------------------> generated NONCE:  8LpyqQdvIa28HTIjTR9pKw==
Before Express CSP Header Middleware
-------------------------------------------> generated NONCE:  3v31KoRNjYwf+ajfXNNXhw==
Before Express CSP Header Middleware
-------------------------------------------> generated NONCE:  sMUYhgkcYDMXHDMNOTnRlA==
Before Express CSP Header Middleware
-------------------------------------------> generated NONCE:  0Zaa33QPteaaWUBbZLhZXA==
GET /static/css/global/footer.css 304 3.056 ms - -
GET /static/css/global/global.css 304 2.734 ms - -
GET /static/slick/slick-theme.css 200 5.107 ms - -
GET /static/css/global/hamburger.css 200 3.803 ms - -
Before Express CSP Header Middleware
-------------------------------------------> generated NONCE:  Ly7ri0OUnaJeSTRXrO2Uxg==
Before Express CSP Header Middleware
-------------------------------------------> generated NONCE:  zAuXEhaJ2qpNP1FmLGYnHw==
GET /static/svelte/svelte.css 200 3.464 ms - -
GET /static/slick/slick.css 200 3.135 ms - -
GET /static/svelte/svelte-bundle.js 304 1.730 ms - -
Before Express CSP Header Middleware
-------------------------------------------> generated NONCE:  Xxh74qC5kvUs/6iVP5Ckcg==
Before Express CSP Header Middleware
-------------------------------------------> generated NONCE:  ndLVatznuuJo3lxnSQn07g==
GET /static/script.js 304 1.184 ms - -
GET /static/index_slider.js 200 1.215 ms - 853
GET /static/css/layouts/index.css 200 4.673 ms - -
Before Express CSP Header Middleware
-------------------------------------------> generated NONCE:  rmEunrBHysX1cBANuHcE9A==
GET /static/slick/slick.min.js 304 0.528 ms - -
Before Express CSP Header Middleware
-------------------------------------------> generated NONCE:  VVwVknnFqpwHI+UAVGDiQA==
Before Express CSP Header Middleware
-------------------------------------------> generated NONCE:  y9xb6FAw+noMTMlCMBN47g==
Before Express CSP Header Middleware
-------------------------------------------> generated NONCE:  huz3j8ipoAGkttl58TuV6A==
Before Express CSP Header Middleware
-------------------------------------------> generated NONCE:  /v8kVXw7eGvDcL8N1Uoz4g==
Before Express CSP Header Middleware
-------------------------------------------> generated NONCE:  jqiudorrrgj/8K+8swOhpg==
Before Express CSP Header Middleware
-------------------------------------------> generated NONCE:  csT6iBmrcaXxXrnnWO9qUQ==
GET /static/images/rw.webp 304 2.959 ms - -
GET /static/images/svg/logo_grey.svg 304 2.823 ms - -
GET /static/images/icon_facebook.svg 304 2.636 ms - -
GET /static/images/icon_twitter.svg 304 2.506 ms - -
GET /static/images/icon_instagram.svg 304 2.457 ms - -
GET /static/images/icon_hamburger_grey.svg 304 2.211 ms - -
Before Express CSP Header Middleware
-------------------------------------------> generated NONCE:  uJQGA7rnyYyZWMOo5Vg4yQ==
Before Express CSP Header Middleware
-------------------------------------------> generated NONCE:  OOUmFVdAahTWtR+PsKOdFg==
GET /static/images/icon_slider_next.svg 304 0.656 ms - -
GET /static/images/icon_slider_prev.svg 304 0.572 ms - -
Before Express CSP Header Middleware
-------------------------------------------> generated NONCE:  J9oz/sb0cmlhjmy47Hmf1Q==
GET /static/slick/slick.min.js 304 1.046 ms - -
Before Express CSP Header Middleware
-------------------------------------------> generated NONCE:  jWb0xdpZdpUGUTjAr32dVw==
GET /static/svelte/svelte-bundle.js 304 0.609 ms - -
Before Express CSP Header Middleware
-------------------------------------------> generated NONCE:  0vGtGk3oRXYEFEf0Re6JFw==
GET /static/script.js 304 0.558 ms - -
Before Express CSP Header Middleware
-------------------------------------------> generated NONCE:  tIeYKbs/NhOWWr3GAo8scw==
GET /static/svelte/svelte-bundle.js.map 304 0.422 ms - -
Before Express CSP Header Middleware
-------------------------------------------> generated NONCE:  TXSm/L4nTgd5mVRQGmyOtg==
GET /static/index_slider.js 304 0.624 ms - -
Before Express CSP Header Middleware
-------------------------------------------> generated NONCE:  yrGsmQMHw8+/ap/qdquy+g==
GET /static/slick/ajax-loader.gif 304 0.568 ms - -

之后:

代码语言:javascript
运行
AI代码解释
复制
Server running on port 1339
Before Express CSP Header Middleware
-------------------------------------------> generated NONCE:  wkMabZKUD8et0YL4qjHzvw==
app.get('/')
passed NONCE to '/' route: ------>  wkMabZKUD8et0YL4qjHzvw==
head.ejs: received NONCE:   ------> wkMabZKUD8et0YL4qjHzvw==
GET / 200 37.994 ms - -
GET /static/css/global/header.css 304 1.253 ms - -
GET /static/css/global/footer.css 304 1.497 ms - -
GET /static/css/global/hamburger.css 304 1.392 ms - -
GET /static/svelte/svelte.css 304 1.402 ms - -
GET /static/svelte/svelte-bundle.js 304 1.355 ms - -
GET /static/css/global/global.css 304 1.276 ms - -
GET /static/slick/slick.css 200 1.454 ms - -
GET /static/slick/slick-theme.css 200 1.113 ms - -
GET /static/script.js 304 0.539 ms - -
GET /static/index_slider.js 200 2.022 ms - 853
GET /static/slick/slick.min.js 304 0.959 ms - -
GET /static/css/layouts/index.css 200 1.647 ms - -
GET /static/images/icon_facebook.svg 304 0.624 ms - -
GET /static/images/icon_twitter.svg 304 0.747 ms - -
GET /static/images/icon_slider_prev.svg 304 0.581 ms - -
GET /static/images/icon_slider_next.svg 304 0.473 ms - -
GET /static/images/rw.webp 200 3.326 ms - 44096
GET /static/images/icon_instagram.svg 304 1.325 ms - -
GET /static/images/icon_hamburger_grey.svg 304 1.371 ms - -
GET /static/images/svg/logo_grey.svg 200 3.797 ms - -
GET /static/slick/slick.min.js 304 0.383 ms - -
GET /static/svelte/svelte-bundle.js 304 0.533 ms - -
GET /static/script.js 304 0.412 ms - -
GET /static/svelte/svelte-bundle.js.map 304 0.340 ms - -
GET /static/index_slider.js 304 0.317 ms - -
GET /static/slick/ajax-loader.gif 304 0.267 ms - -
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70924591

复制
相关文章
Pentaho BI Server 批量上传文件排坑笔记
本文讲的是实际操作中的小问题和小技巧, 这里要谈谈Pentaho BI Server对文件夹的操作,在项目使用pentaho cde图表开发完图表后,通常会迁移cde图表文件来完成开发与部署不同环境下的图表迁移,在迁移过程中发现BI Server可以对Pentaho中文件夹进行下载,
ZhangXianSheng
2019/05/28
7660
6个用于大数据分析的最好工具
大数据是一个含义广泛的术语,是指数据集,如此庞大而复杂的,他们需要专门设计的硬件和软件工具进行处理。该数据集通常是万亿或EB的大小。这些数据集收集自各种各样的来源:传感器,气候信息,公开的信息,如杂志,报纸,文章。大数据产生的其他例子包括购买交易记录,网络日志,病历,军事监控,视频 和图像档案,及大型电子商务。
IT阅读排行榜
2018/08/15
1.2K0
6个用于大数据分析的最好工具
【性能分析】大数据分析工具
大数据是一个含义广泛的术语,是指数据集,如此庞大而复杂的,他们需要专门设计的硬件和软件工具进行处理。该数据集通常是万亿或EB的大小。这些数据集收集自各种各样的来源:传感器,气候信息,公开的信息,如杂志,报纸,文章。大数据产生的其他例子包括购买交易记录,网络日志,病历,军事监控,视频和图像档案,及大型电子商务。
Luga Lee
2022/03/25
1.2K0
【性能分析】大数据分析工具
大数据处理分析的六大工具
下面请看详细介绍: Hadoop Hadoop 是一个能够对大量数据进行分布式处理的软件框架。但是 Hadoop 是以一种可靠、高效、可伸缩的方式进行处理的。Hadoop 是可靠的,因为它假设计算元
用户1410343
2018/03/27
3.1K0
大数据处理分析的六大工具
6个用于大数据分析的最好工具
大数据是一个含义广泛的术语,是指数据集,如此庞大而复杂的,他们需要专门设计的硬件和软件工具进行处理。该数据集通常是万亿或EB的大小。这些数据集收集自各种各样的来源:传感器,气候信息,公开的信息,如杂志,报纸,文章。大数据产生的其他例子包括购买交易记录,网络日志,病历,军事监控,视频和图像档案,及大型电子商务。 在大数据和大数据分析,他们对企业的影响有一个兴趣高涨。大数据分析是研究大量的数据的过程中寻找模式,相关性和其他有用的信息,可以帮助企业更好地适应变化,并做出更明智的决策。 一 Hadoop Hadoo
小莹莹
2018/04/20
1.1K0
6个用于大数据分析的最好工具
【工具】六大工具帮你做好大数据分析
大数据是一个含义广泛的术语,是指数据集,如此庞大而复杂的,他们需要专门设计的硬件和软件工具进行处理。该数据集通常是万亿或EB的大小。这些数据集收集自各种各样的来源:传感器、气候信息、公开的信息、如杂志、报纸、文章。大数据产生的其他例子包括购买交易记录、网络日志、病历、事监控、视频和图像档案、及大型电子商务。大数据分析是在研究大量的数据的过程中寻找模式,相关性和其他有用的信息,可以帮助企业更好地适应变化,并做出更明智的决策。 Hadoop Hadoop 是一个能够对大量数据进行分布式处理的软件框架。但是
小莹莹
2018/04/20
9960
【工具】六大工具帮你做好大数据分析
6个用于大数据分析的最好工具
大数据是一个含义广泛的术语,是指数据集,如此庞大而复杂的,他们需要专门设计的硬件和软件工具进行处理。该数据集通常是万亿或EB的大小。这些数据集收集自各种各样的来源:传感器,气候信息,公开的信息,如杂志,报纸,文章。大数据产生的其他例子包括购买交易记录,网络日志,病历,军事监控,视频和图像档案,及大型电子商务。
IT阅读排行榜
2018/08/13
7130
6个用于大数据分析的最好工具
RocketMQ服务器及管理控制台安装 [中奖名单]
进入bin目录,建议修改runbroker.sh和runserver.sh默认JVM的大小,防止内存不足启动失败。参考设置如下
BUG弄潮儿
2020/11/19
1.6K0
RocketMQ服务器及管理控制台安装 [中奖名单]
DELL服务器iDRAC远程访问管理控制台使用
戴尔远程访问控制器(DRAC-Integrated Dell Remote Access Controller6 )控制台是管理站软件,旨在提供适用于戴尔系统的远程管理功能, 是一种系统管理硬件和软件解决方案,
全栈工程师修炼指南
2022/09/29
24.1K0
DELL服务器iDRAC远程访问管理控制台使用
dubbo管理控制台
1、在github下载dubbo源码 https://github.com/alibaba/dubbo
week
2018/08/24
2.1K0
dubbo管理控制台
pentaho中Invalid byte
上网一查,说是有中文,字体不相符,可是我没有写中文,为了能继续往后进行,修改了如下文件
py3study
2020/01/07
6180
pentaho8.1安装
本文主要介绍pentaho8.1的安装过程,重点介绍pentaho-server的安装。
Java架构师必看
2021/05/14
8960
pentaho8.1安装
大数据可视化项目开发总纲
下载地址:www.oracle.com/cn/downloads/index.html
ZhangXianSheng
2019/05/28
1.5K0
Dubbo03【管理控制台和监控中心搭建】
源码下载与编译   要搭建管理控制台和监控中心我们首先需要下载dubbo的源码并编译,首先去GitHub上下载Dubbo源码: https://github.com/apache/incubator
用户4919348
2019/04/02
1.1K0
Dubbo03【管理控制台和监控中心搭建】
7.Sentinel源码分析—Sentinel是怎么和控制台通信的?
在看我的这篇文章之前大家可以先看一下官方的这篇文章:https://github.com/alibaba/Sentinel/wiki/%E6%8E%A7%E5%88%B6%E5%8F%B0。介绍了控制台怎么使用,以及客户端要怎么设置才能被收集数据。
luozhiyun
2019/09/30
1.1K0
7.Sentinel源码分析—Sentinel是怎么和控制台通信的?
7.Sentinel源码分析—Sentinel是怎么和控制台通信的?
在看我的这篇文章之前大家可以先看一下官方的这篇文章:https://github.com/alibaba/Sentinel/wiki/%E6%8E%A7%E5%88%B6%E5%8F%B0。介绍了控制台怎么使用,以及客户端要怎么设置才能被收集数据。
luozhiyun
2019/09/28
9210
Cloudera Manager管理控制台
Cloudera Manager是一个用于管理、配置和监控CDP私有云基础集群和Cloudera Runtime服务的应用程序。
大数据杂货铺
2020/11/25
3K0
Cloudera Manager管理控制台
Jconsole-java监视和管理控制台的使用
Jconsole 监控java程序时,在启动java程序时,加上以下选项就可以进行远程监控:
yawn
2019/10/12
1.1K0
Jconsole-java监视和管理控制台的使用
Cloudera Manager管理控制台
Cloudera Manager管理控制台(Cloudera Manager Admin Console)是一个基于Web的用户界面,用于配置,管理和监控CDH。
Fayson
2018/03/30
4.8K0
「集成架构」ETL工具大比拼:Talend vs Pentaho
数据总是巨大的,任何行业都必须存储这些“数据”,因为它带有巨大的信息,从而导致他们的战略规划。正如人们需要房子感到安全一样,数据也必须得到保障。这个数据主页在技术上称为数据仓库。
架构师研究会
2019/09/08
2.3K0

相似问题

带有express的nodejs :每个视图的变量

10

Express - Nodejs - HTTPS服务器

10

将nodejs express静态请求重定向到https

480

Nodejs将服务器HTTP更改为HTTPS

12

NodeJS/Express自动检测SSL通过HTTP (HTTPS)解释?

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文