在 Node.js 和 React.js 中使用头盔包是否也能保护我的前端

Does Using Helmet Package Protect My Frontend Aswell in Node.js with React.js

我有一个问题,如果我使用 nodejs 作为后端,我将如何保护我的前端。例如,我创建了我的网站完全反应作为前端和我的后端与 nodejs 并使用 Axios 获取和 post 从我的后端到我的前端的数据等等。

我现在的问题是,如果我在后端使用安全措施,它是否也会保护我的前端?

例如,如果我在 nodejs 中使用 helmet,我为响应 headers 添加的保护是否也适用于我的主要网站,即反应前端?

这是我的意思的一些代码。

var express = require('express');
var helmet = require('helmet');
 
var app = express();
 
app.use(helmet());


app.use(
  helmet({
    frameguard: {
      action: "deny",
    },
  })
);

app.use(helmet.noSniff());
app.use(helmet.xssFilter());

我的后端 nodejs 服务器中的上述代码是否足以保护我的网站,还是我还需要在前端设置响应 headers 和安全措施,因为我将使用后端 nodejs服务器作为 API 与我的 React 网站进行交互。

tl;dr:要获得 Helmet 的保护,您需要在服务于您的页面的任何内容上设置 Helmet 的 headers。 如果您的 HTML 页面是由您的 Node 后端提供服务,然后您将在那里进行。

这里是头盔维护员。

有一堆 HTTP 响应 header,它们有不同的效果。例如,Content-Type header 告诉浏览器如何解释数据。如果 Content-Typetext/html,浏览器会将数据解释为 HTML。如果是 image/png,他们会将其解释为 PNG 文件。

头盔设置各种具有各种效果的 HTTP 响应 header。

比如Helmet设置了Content-Security-Policyheader,保护用户免受各种攻击。想象以下 HTML:

<script>alert("Hello world!")</script>

没有 Content-Security-Policy 响应 header,JavaScript 将 运行 并且用户将看到警报。但是,如果 Content-Security-Policy 设置为类似 default-src 'self'; script-src 'none' 的内容,浏览器将根本不会 运行 该代码。

如果您的后端服务器未提供 HTML,则不会应用这些响应 header,您也不会获得保护。如果您的后端服务器 服务于 HTML,那么您会的!通常,您希望将这些响应 header 尽可能地放在任何地方(尽管有很多例外)。

另外,顺便说一句:您在上面的代码片段中多次使用 Helmet。您可以将其缩短为:

app.use(
  helmet({
    frameguard: {
      action: "deny",
    },
  })
);