首页 >web前端 >js教程 >Nosecone:用于在 Next.js、SvelteKit、Node.js、Bun 和 Deno 中设置安全标头的库

Nosecone:用于在 Next.js、SvelteKit、Node.js、Bun 和 Deno 中设置安全标头的库

Susan Sarandon
Susan Sarandon原创
2024-12-17 22:44:15352浏览

Nosecone: a library for setting security headers in Next.js, SvelteKit, Node.js, Bun, and Deno

我们很高兴地宣布 Nosecone,这是一个开源库,旨在为使用以下内容构建的应用程序直接设置安全标头(例如内容安全策略 (CSP) 和 HTTP 严格传输安全 (HSTS)) Next.js、SvelteKit 和其他使用 Bun、Deno 或 Node.js 的 JavaScript 框架。

虽然您始终可以手动设置标头,但当您需要特定于环境的配置、内联脚本或样式的动态随机数,或者有许多需要自定义配置的变体时,复杂性就会增加。

无论您是要适应 2025 年生效的 PCI DSS 4.0 更严格的安全标头要求,还是只是希望增强应用程序的安全性,Nosecone 都可以提供:

  • 具有实用默认值的类型安全 API。
  • Next.js 的中间件适配器。
  • SvelteKit 的配置挂钩。
  • 与 Bun、Deno 和 Node.js 中的 Web 服务器轻松集成。

您可以将 Nosecone 作为独立库使用,或与 Arcjet 安全即代码 SDK 一起使用,以进一步增强应用程序对攻击、机器人和垃圾邮件的防御能力。

阅读我们的快速入门指南并查看GitHub 上的源代码

安全标头

Nosecone 提供了通用的 JS API、Next.js 的中间件适配器以及 SvelteKit 的配置挂钩来设置合理的默认值。您可以在本地测试它们并轻松调整配置作为代码。

Nosecone 是开源的,支持以下安全标头:

  • 内容安全策略 (CSP)
  • 跨源嵌入器策略 (COEP)
  • 跨源开启者政策
  • 跨源资源策略
  • 起源-代理-集群
  • 推荐人政策
  • 严格传输安全 (HSTS)
  • X-内容类型-选项
  • X-DNS-预取-控制
  • X-下载选项
  • X 框架选项
  • X 允许的跨域策略
  • X-XSS-保护

默认值如下所示:

HTTP/1.1 200 OK
content-security-policy: base-uri 'none'; child-src 'none'; connect-src 'self'; default-src 'self'; font-src 'self'; form-action 'self'; frame-ancestors 'none'; frame-src 'none'; img-src 'self' blob: data:; manifest-src 'self'; media-src 'self'; object-src 'none'; script-src 'self'; style-src 'self'; worker-src 'self'; upgrade-insecure-requests;
cross-origin-embedder-policy: require-corp
cross-origin-opener-policy: same-origin
cross-origin-resource-policy: same-origin
origin-agent-cluster: ?1
referrer-policy: no-referrer
strict-transport-security: max-age=31536000; includeSubDomains
x-content-type-options: nosniff
x-dns-prefetch-control: off
x-download-options: noopen
x-frame-options: SAMEORIGIN
x-permitted-cross-domain-policies: none
x-xss-protection: 0
Content-Type: text/plain
Date: Wed, 27 Nov 2024 21:05:50 GMT
Connection: keep-alive
Keep-Alive: timeout=5
Transfer-Encoding: chunked

设置 Next.js 安全标头

Nosecone 提供了一个 Next.js 中间件适配器来设置默认标头。

使用 npm i @nosecone/next 安装,然后设置此 middleware.ts 文件。有关详细信息,请参阅文档

import { createMiddleware } from "@nosecone/next";

// Remove your middleware matcher so Nosecone runs on every route.

export default createMiddleware();

设置 SvelteKit 安全标头

Nosecone 提供了一个 CSP 配置和一个钩子来设置 SvelteKit 中的默认安全标头。

使用 npm i @nosecone/sveltekit 安装,然后设置此 svelte.config.js 文件。有关详细信息,请参阅文档

import adapter from "@sveltejs/adapter-auto";
import { vitePreprocess } from "@sveltejs/vite-plugin-svelte";
import { csp } from "@nosecone/sveltekit"

/** @type {import('@sveltejs/kit').Config} */
const config = {
  preprocess: vitePreprocess(),

  kit: {
    // Apply CSP with Nosecone defaults
    csp: csp(),
    adapter: adapter(),
  },
};

export default config;

在 SvelteKit 配置上设置 CSP 后,您可以将其他安全标头设置为 src/hooks.server.ts 中的挂钩

HTTP/1.1 200 OK
content-security-policy: base-uri 'none'; child-src 'none'; connect-src 'self'; default-src 'self'; font-src 'self'; form-action 'self'; frame-ancestors 'none'; frame-src 'none'; img-src 'self' blob: data:; manifest-src 'self'; media-src 'self'; object-src 'none'; script-src 'self'; style-src 'self'; worker-src 'self'; upgrade-insecure-requests;
cross-origin-embedder-policy: require-corp
cross-origin-opener-policy: same-origin
cross-origin-resource-policy: same-origin
origin-agent-cluster: ?1
referrer-policy: no-referrer
strict-transport-security: max-age=31536000; includeSubDomains
x-content-type-options: nosniff
x-dns-prefetch-control: off
x-download-options: noopen
x-frame-options: SAMEORIGIN
x-permitted-cross-domain-policies: none
x-xss-protection: 0
Content-Type: text/plain
Date: Wed, 27 Nov 2024 21:05:50 GMT
Connection: keep-alive
Keep-Alive: timeout=5
Transfer-Encoding: chunked

设置 Bun 安全标头

Nosecone 可以连接到您的 Bun Web 服务器以直接设置安全响应标头。

使用bun add nosecone进行安装,然后将其添加到您的服务器。有关详细信息,请参阅文档

import { createMiddleware } from "@nosecone/next";

// Remove your middleware matcher so Nosecone runs on every route.

export default createMiddleware();

设置 Deno 安全标头

Nosecone 与 Denoserve 一起设置安全标头。安装 eno add npm:nosecone 并将其添加到您的服务器。有关详细信息,请参阅文档

import adapter from "@sveltejs/adapter-auto";
import { vitePreprocess } from "@sveltejs/vite-plugin-svelte";
import { csp } from "@nosecone/sveltekit"

/** @type {import('@sveltejs/kit').Config} */
const config = {
  preprocess: vitePreprocess(),

  kit: {
    // Apply CSP with Nosecone defaults
    csp: csp(),
    adapter: adapter(),
  },
};

export default config;

设置 Node.js 安全标头

Nosecone 也可以与 Node.js 应用程序一起使用,但如果您使用 Express.js(单独或与 Remix 一起使用),那么我们建议使用 Helmet,它为我们在 Nosecone 上的工作提供了很多信息。

使用 npm i nosecone 安装,然后在 Node.js 服务器上进行设置。有关详细信息,请参阅文档

import { createHook } from "@nosecone/sveltekit";
import { sequence } from "@sveltejs/kit/hooks";

export const handle = sequence(createHook());

贡献

Nosecone 是开源的,因此请随时提交问题以进行任何改进或更改。如果您需要帮助,我们也可以使用 Discord!

以上是Nosecone:用于在 Next.js、SvelteKit、Node.js、Bun 和 Deno 中设置安全标头的库的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn