Nosecone:用于在 Next.js、SvelteKit、Node.js、Bun 和 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中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

JavaScript是现代Web开发的基石,它的主要功能包括事件驱动编程、动态内容生成和异步编程。1)事件驱动编程允许网页根据用户操作动态变化。2)动态内容生成使得页面内容可以根据条件调整。3)异步编程确保用户界面不被阻塞。JavaScript广泛应用于网页交互、单页面应用和服务器端开发,极大地提升了用户体验和跨平台开发的灵活性。

Python和JavaScript开发者的薪资没有绝对的高低,具体取决于技能和行业需求。1.Python在数据科学和机器学习领域可能薪资更高。2.JavaScript在前端和全栈开发中需求大,薪资也可观。3.影响因素包括经验、地理位置、公司规模和特定技能。

学习JavaScript不难,但有挑战。1)理解基础概念如变量、数据类型、函数等。2)掌握异步编程,通过事件循环实现。3)使用DOM操作和Promise处理异步请求。4)避免常见错误,使用调试技巧。5)优化性能,遵循最佳实践。

如何在JavaScript中将具有相同ID的数组元素合并到一个对象中?在处理数据时,我们常常会遇到需要将具有相同ID�...

实现视差滚动和元素动画效果的探讨本文将探讨如何实现类似资生堂官网(https://www.shiseido.co.jp/sb/wonderland/)中�...

JavaScript的最新趋势包括TypeScript的崛起、现代框架和库的流行以及WebAssembly的应用。未来前景涵盖更强大的类型系统、服务器端JavaScript的发展、人工智能和机器学习的扩展以及物联网和边缘计算的潜力。

深入探讨console.log输出差异的根源本文将分析一段代码中console.log函数输出结果的差异,并解释其背后的原因。�...
