ArcJet aide les développeurs à protéger leurs applications en quelques lignes de code. Mettre en œuvre la limitation des taux, la protection des bots, la vérification des e-mails et la défense contre les attaques communes.
Il s'agit du monorepo contenant divers packages Open Source ArcJet pour JS.
@arcjet/bun avec notre guide de démarrage BUN Quick.npm:@arcjet/deno avec notre guide de démarrage rapide Deno.@arcjet/nest avec notre guide de démarrage rapide NESTJS.@arcjet/next avec notre guide de démarrage Quick Next.js.@arcjet/node avec notre guide de démarrage rapide Node.js.@arcjet/remix avec notre guide de démarrage rapide Remix.@arcjet/sveltekit avec notre guide de démarrage rapide Sveltekit. Rejoignez notre serveur Discord ou contactez la prise en charge.
Essayez une application ArcJet Protected Live sur https://example.arcjet.com (code source).
Lisez les documents sur docs.arcjet.com.
L'exemple de limite de taux d'arc à l'arc ci-dessous applique une règle de limite de débit de token de jeton à une voie où nous identifions l'utilisateur en fonction de leur ID, par exemple s'ils sont connectés. Le seau est configuré avec une capacité maximale de 10 jetons et recharge de 5 jetons toutes les 10 secondes. Chaque demande consomme 5 jetons.
Voir la documentation Arcjet Next.js pour les détails.
import arcjet , { tokenBucket } from "@arcjet/next" ;
import { NextResponse } from "next/server" ;
const aj = arcjet ( {
key : process . env . ARCJET_KEY ! , // Get your site key from https://app.arcjet.com
characteristics : [ "userId" ] , // track requests by a custom user ID
rules : [
// Create a token bucket rate limit. Other algorithms are supported.
tokenBucket ( {
mode : "LIVE" , // will block requests. Use "DRY_RUN" to log only
refillRate : 5 , // refill 5 tokens per interval
interval : 10 , // refill every 10 seconds
capacity : 10 , // bucket maximum capacity of 10 tokens
} ) ,
] ,
} ) ;
export async function GET ( req : Request ) {
const userId = "user123" ; // Replace with your authenticated user ID
const decision = await aj . protect ( req , { userId , requested : 5 } ) ; // Deduct 5 tokens from the bucket
console . log ( "Arcjet decision" , decision ) ;
if ( decision . isDenied ( ) ) {
return NextResponse . json (
{ error : "Too Many Requests" , reason : decision . reason } ,
{ status : 429 } ,
) ;
}
return NextResponse . json ( { message : "Hello world" } ) ;
}L'exemple de protection des bots Arcjet ci-dessous renverra une réponse interdite 403 pour toutes les demandes de clients, nous sommes sûrs que nous sommes automatisés.
Voir la documentation ArcJet Node.js Bot Protection pour plus de détails.
import arcjet , { detectBot } from "@arcjet/node" ;
import http from "node:http" ;
const aj = arcjet ( {
key : process . env . ARCJET_KEY ! , // Get your site key from https://app.arcjet.com
rules : [
detectBot ( {
mode : "LIVE" , // will block requests. Use "DRY_RUN" to log only
// configured with a list of bots to allow from
// https://arcjet.com/bot-list
allow : [ ] , // "allow none" will block all detected bots
} ) ,
] ,
} ) ;
const server = http . createServer ( async function (
req : http . IncomingMessage ,
res : http . ServerResponse ,
) {
const decision = await aj . protect ( req ) ;
console . log ( "Arcjet decision" , decision ) ;
if ( decision . isDenied ( ) ) {
res . writeHead ( 403 , { "Content-Type" : "application/json" } ) ;
res . end ( JSON . stringify ( { error : "Forbidden" } ) ) ;
} else {
res . writeHead ( 200 , { "Content-Type" : "application/json" } ) ;
res . end ( JSON . stringify ( { message : "Hello world" } ) ) ;
}
} ) ;
server . listen ( 8000 ) ; Nous fournissons le code source de divers packages dans ce référentiel, vous pouvez donc en trouver un spécifique dans les catégories et descriptions ci-dessous.
@arcjet/bun : sdk pour bun.sh.@arcjet/deno : sdk pour deno.@arcjet/nest : SDK pour NESTJS.@arcjet/next : SDK pour le cadre suivant.js.@arcjet/node : sdk pour node.js.@arcjet/remix : sdk pour remix.@arcjet/sveltekit : sdk pour sveltekit.@arcjet/analyze : moteur d'analyse locale.@arcjet/headers : extension arcjet de la classe d'en-têtes.@arcjet/ip : Utilitaires pour trouver l'IP d'origine d'une demande.@arcjet/redact : Informations sensibles à la réduction et non rouge à partir des chaînes.nosecone : Protégez votre Response avec des en-têtes sécurisés.@nosecone/next : Protégez votre application Next.js avec des en-têtes sécurisés.@nosecone/sveltekit : Protégez votre application Sveltekit avec des en-têtes sécurisés.arcjet : JS SDK Core.@arcjet/body : Utilitaires pour extraire le corps d'un Node.js INPORINGMESSAGE.@arcjet/decorate : utilitaires pour la décoration des réponses avec des informations.@arcjet/duration : Utilitaires pour l'analyse des chaînes de durée en secondes entières.@arcjet/env : Détection d'environnement pour les variables ArcJet.@arcjet/logger : Logueur léger qui reflète l'interface de connexion structurée Pino.@arcjet/protocol : interface js dans le protocole ArcJet.@arcjet/runtime : Runtime Detection.@arcjet/sprintf : remplacement indépendant de la plate-forme pour util.format .@arcjet/transport : Mécanismes de transport pour le protocole ArcJet.@arcjet/eslint-config : Configy Eslint personnalisé pour nos projets.@arcjet/redact-wasm : Informations sensibles Moteur de détection de rédaction.@arcjet/rollup-config : configuration de rollup personnalisée pour nos projets.@arcjet/tsconfig : tsconfig personnalisé pour nos projets. Ce référentiel suit la politique de support ArcJet.
Ce référentiel suit la politique de sécurité ArcJet.
Licencié sous la licence Apache, version 2.0.