我们很高兴地宣布 Nosecone,这是一个开源库,旨在为使用以下内容构建的应用程序直接设置安全标头(例如内容安全策略 (CSP) 和 HTTP 严格传输安全 (HSTS)) Next.js、SvelteKit 和其他使用 Bun、Deno 或 Node.js 的 JavaScript 框架。
虽然您始终可以手动设置标头,但当您需要特定于环境的配置、内联脚本或样式的动态随机数,或者有许多需要自定义配置的变体时,复杂性就会增加。
无论您是要适应 2025 年生效的 PCI DSS 4.0 更严格的安全标头要求,还是只是希望增强应用程序的安全性,Nosecone 都可以提供:
您可以将 Nosecone 作为独立库使用,或与 Arcjet 安全即代码 SDK 一起使用,以进一步增强应用程序对攻击、机器人和垃圾邮件的防御能力。
阅读我们的快速入门指南并查看GitHub 上的源代码。
Nosecone 提供了通用的 JS API、Next.js 的中间件适配器以及 SvelteKit 的配置挂钩来设置合理的默认值。您可以在本地测试它们并轻松调整配置作为代码。
Nosecone 是开源的,支持以下安全标头:
默认值如下所示:
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
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();
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
Nosecone 可以连接到您的 Bun Web 服务器以直接设置安全响应标头。
使用bun add nosecone进行安装,然后将其添加到您的服务器。有关详细信息,请参阅文档。
import { createMiddleware } from "@nosecone/next"; // Remove your middleware matcher so Nosecone runs on every route. export default createMiddleware();
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;
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中文网其他相关文章!