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廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務
