问题: 我正在使用React前端和Nestjs后端进行Web应用程序。后端使用头盔管理内容安全策略(CSP)。 我的前端需要连接到API H ...

问题描述 投票:0回答:0

我正在使用the -reactraint frontend和nestjs后端的Web应用程序工作。后端使用

HELMET

来管理容量安全策略(CSP).。 我的前端需要连接到具有dynamic IP地址(通过DHCP分配)托管在物理扫描仪上的API。扫描仪的IP地址存储在database

中,并由前端动态获取。

电流设置: 带有头盔的后端CSP配置:

import helmet from 'helmet' const defaultDirectives = helmet.contentSecurityPolicy.getDefaultDirectives() app.use( helmet({ contentSecurityPolicy: { useDefaults: true, reportOnly: false, directives: { ...defaultDirectives, 'connect-src': ["'self'", '172.x.x.x'], // Static IP set here 'script-src': ["'self'", '*.openstreetmap.org'], 'img-src': ["'self'", 'data:', 'blob:', '*.openstreetmap.org'], 'style-src': ["'self'", "'unsafe-inline'", 'fonts.googleapis.com'], 'font-src': ["'self'", 'fonts.gstatic.com'] } }, crossOriginEmbedderPolicy: false, crossOriginOpenerPolicy: false, crossOriginResourcePolicy: false, }) )

sissue:

当扫描仪的IP地址更改(例如,从工作到家里的172.x.x.x)时,我会遇到以下错误:

重新使用以连接到'http://192.x.x.x.x/api/connect',因为它违反了以下内容安全策略指令:“ connect-src'self'172.x.x.x.x”。
iT似乎在

backend中配置的CSP

是tolistriptive

,我不确定如何根据扫描仪的更改IP动态设置IP地址。

从事,感觉就像后端的
HELMETCSP配置可能是前端策略,导致了这一问题。
我尝试了什么

I试图在CSP中设置

192.x.x.x指令以允许扫描仪的IP(connect-src),但这并不解释扫描仪IP地址的动态性质。 I尝试使用前端中的CSP使用metatag

,但是由于后端CSP覆盖了它,因此无法解决问题,对此不确定。

我的问题:

如何使用Nestjs中的头盔在CSP中动态更改的IP地址?

有一种方法可以根据数据库中存储的IP动态更新172.x.x.x

指令?
  1. 将禁用CSP的connect-src
    (例如,使用
    connect-src
    '*'
    )是一种有效的方法,而不会损害过多安全性?
  2. 在允许这些动态连接的同时保持安全性的最佳实践是什么?
任何见解或建议将不胜感激! 😊

在这里维护器。让我们回答您的四个问题。
    要回答您的前两个问题,这是您如何动态设置
  1. 'unsafe-inline'指令的方式。 我将从编写一些存储动态IP地址的通用中间件开始。看起来像这样:
  2. connect-src
  3. 然后您可以动态设置内容 - 安全性:
    app.use((req, res, next) => {
      res.locals.scannerIpAddress = dynamicallyFetchIpAddress();
      next();
    });
    
    您的第三个问题是关于完全禁用
  4. app.use( helmet({ contentSecurityPolicy: { // ... directives: { ...defaultDirectives, "connect-src": [ "'self'", (req, res) => res.locals.scannerIpAddress, ], // ... }, }, // ... }), );
  5. 。这可能会影响安全性,因为流氓脚本可以连接到某些恶意服务器。但是,这取决于您是否可以接受风险。 您的最后一个问题是关于最佳安全实践,同时允许这些动态连接。您需要确保扫描仪IP地址是安全而正确的。
    
    
security ip-address content-security-policy helmet.js dynamic-ip
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.