我們很高興地宣布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中文網其他相關文章!