Maison > interface Web > js tutoriel > Nosecone : une bibliothèque pour définir les en-têtes de sécurité dans Next.js, SvelteKit, Node.js, Bun et Deno

Nosecone : une bibliothèque pour définir les en-têtes de sécurité dans Next.js, SvelteKit, Node.js, Bun et Deno

Susan Sarandon
Libérer: 2024-12-17 22:44:15
original
350 Les gens l'ont consulté

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

Nous sommes ravis d'annoncer Nosecone, une bibliothèque open source conçue pour faciliter la configuration des en-têtes de sécurité, tels que la politique de sécurité du contenu (CSP) et la sécurité du transport HTTP Strict (HSTS), pour les applications créées avec Next.js, SvelteKit et autres frameworks JavaScript utilisant Bun, Deno ou Node.js.

Bien que vous puissiez toujours définir les en-têtes manuellement, la complexité augmente lorsque vous avez besoin de configurations spécifiques à l'environnement, de valeurs occasionnelles dynamiques pour les scripts ou les styles en ligne, ou lorsque vous avez de nombreuses variantes nécessitant une configuration personnalisée.

Que vous vous adaptiez aux exigences plus strictes en matière d'en-tête de sécurité de la norme PCI DSS 4.0 qui entrera en vigueur en 2025 ou que vous cherchiez simplement à améliorer la sécurité de votre application, Nosecone vous propose :

  • Une API de type sécurisé avec des valeurs par défaut pragmatiques.
  • Adaptateurs middleware pour Next.js.
  • Hooks de configuration pour SvelteKit.
  • Intégration facile avec les serveurs Web dans Bun, Deno et Node.js.

Vous pouvez utiliser Nosecone comme bibliothèque autonome ou avec la sécurité Arcjet en tant que SDK de code pour renforcer davantage les défenses de votre application contre les attaques, les robots et le spam.

Lisez notre guide de démarrage rapide et vérifiez le code source sur GitHub.

En-têtes de sécurité

Nosecone fournit une API JS générale, un adaptateur middleware pour Next.js et des hooks de configuration pour SvelteKit afin de définir des valeurs par défaut raisonnables. Vous pouvez les tester localement et ajuster facilement la configuration sous forme de code.

Nosecone est open source et prend en charge les en-têtes de sécurité suivants :

  • Politique de sécurité du contenu (CSP)
  • Politique d'intégration d'origine croisée (COEP)
  • Politique d'ouverture d'origines croisées
  • Politique-de-ressources-d'origine croisée
  • Origin-Agent-Cluster
  • Politique de référencement
  • Sécurité stricte des transports (HSTS)
  • Options de type de contenu X
  • X-DNS-Prefetch-Control
  • X-Options de téléchargement
  • Options X-Frame
  • Politiques-X-Permises-Cross-Domain
  • Protection X-XSS

Les valeurs par défaut ressemblent à ceci :

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
Copier après la connexion
Copier après la connexion

Définition des en-têtes de sécurité Next.js

Nosecone fournit un adaptateur middleware Next.js pour définir les en-têtes par défaut.

Installez avec npm i @nosecone/next puis configurez ce fichier middleware.ts. Voir la documentation pour plus de détails.

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

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

export default createMiddleware();
Copier après la connexion
Copier après la connexion

Définition des en-têtes de sécurité SvelteKit

Nosecone fournit une configuration CSP et un hook pour définir les en-têtes de sécurité par défaut dans SvelteKit.

Installez avec npm i @nosecone/sveltekit puis configurez ce fichier svelte.config.js. Voir la documentation pour plus de détails.

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;
Copier après la connexion
Copier après la connexion

Avec le CSP défini sur la configuration SvelteKit, vous pouvez ensuite configurer les autres en-têtes de sécurité comme hook dans 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
Copier après la connexion
Copier après la connexion

Définition des en-têtes de sécurité Bun

Nosecone peut être connecté à votre serveur web Bun pour définir directement les en-têtes de réponse de sécurité.

Installez avec bun add nosecone, puis ajoutez-le à votre serveur. Voir la documentation pour plus de détails.

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

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

export default createMiddleware();
Copier après la connexion
Copier après la connexion

Définition des en-têtes de sécurité Deno

Nosecone fonctionne avec Deno serve pour définir les en-têtes de sécurité. Installez deno add npm:nosecone, puis ajoutez-le à votre serveur. Voir la documentation pour plus de détails.

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;
Copier après la connexion
Copier après la connexion

Définition des en-têtes de sécurité Node.js

Nosecone peut également fonctionner avec les applications Node.js, mais si vous utilisez Express.js (seul ou avec Remix), nous vous recommandons d'utiliser Helmet, qui a éclairé une grande partie de notre travail sur Nosecone.

Installez avec npm i nosecone, puis configurez-le sur votre serveur Node.js. Voir la documentation pour plus de détails.

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

export const handle = sequence(createHook());
Copier après la connexion

Contribuer

Nosecone est open source, alors n'hésitez pas à soumettre des problèmes pour toute amélioration ou modification. Nous sommes également sur Discord si vous avez besoin d'aide !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal