A ArcJet ajuda os desenvolvedores a proteger seus aplicativos em apenas algumas linhas de código. Implementar limitação da taxa, proteção de bot, verificação de email e defesa contra ataques comuns.
Este é o Monorepo que contém vários pacotes de código aberto do ARCJET para JS.
@arcjet/bun com o nosso guia de partida rápida do BUN.npm:@arcjet/deno com nosso guia de início rápido Deno.@arcjet/nest com nosso guia de início rápido do NESTJS.@arcjet/next com nosso próximo.js Guia de Iniciação Quick.@arcjet/node com nosso guia de início rápido Node.js.@arcjet/remix com nosso Remix Quick Start Guide.@arcjet/sveltekit com nosso guia de início rápido Sveltekit. Junte -se ao nosso servidor Discord ou procure suporte.
Experimente um aplicativo protegido por arcjet ao vivo em https://example.arcjet.com (código -fonte).
Leia os documentos em docs.arcjet.com.
O exemplo do limite da taxa de arcjato abaixo aplica uma regra de limite de taxa de balde de token a uma rota em que identificamos o usuário com base em seu ID, por exemplo, se eles estiverem conectados. O balde está configurado com uma capacidade máxima de 10 tokens e recarretes por 5 tokens a cada 10 segundos. Cada solicitação consome 5 tokens.
Consulte a documentação limite da taxa do arcjet Next.js para obter detalhes.
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" } ) ;
}O exemplo de proteção do BOT do ArcJet abaixo retornará uma resposta proibida 403 para todas as solicitações de clientes, com certeza são automatizadas.
Consulte a documentação de proteção do Bot Node.js Bot para detalhes.
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 ) ; Fornecemos o código -fonte para vários pacotes neste repositório, para que você possa encontrar um específico através das categorias e descrições abaixo.
@arcjet/bun : SDK para Bun.sh.@arcjet/deno : SDK para Deno.@arcjet/nest : SDK para Nestjs.@arcjet/next : SDK para a estrutura Next.js.@arcjet/node : sdk para node.js.@arcjet/remix : SDK para remix.@arcjet/sveltekit : SDK para Sveltekit.@arcjet/analyze : mecanismo de análise local.@arcjet/headers : Extensão do arcjet da classe Headers.@arcjet/ip : utilitários para encontrar o IP de origem de uma solicitação.@arcjet/redact : Redactar e não redelact Informações sensíveis de strings.nosecone : Proteja sua Response com cabeçalhos seguros.@nosecone/next : Protect Your Next.js Application com cabeçalhos seguros.@nosecone/sveltekit : Protect Your Sveltekit com cabeçalhos seguros.arcjet : JS SDK Core.@arcjet/body : utilitários para extrair o corpo de um node.js IndomingMessage.@arcjet/decorate : Utilitários para decorar respostas com informações.@arcjet/duration : utilitários para analisar seqüências de duração em números inteiros.@arcjet/env : Detecção de ambiente para variáveis de arcjato.@arcjet/logger : Logger leve que reflete a interface do Logger estruturada Pino.@arcjet/protocol : interface JS no protocolo ArcJet.@arcjet/runtime : Detecção de tempo de execução.@arcjet/sprintf : substituição independente da plataforma para util.format .@arcjet/transport : mecanismos de transporte para o protocolo ArcJet.@arcjet/eslint-config : configuração de ESLint personalizada para nossos projetos.@arcjet/redact-wasm : mecanismo de detecção de redação de informações sensíveis.@arcjet/rollup-config : Config ROLLP Custom para nossos projetos.@arcjet/tsconfig : TSConfig personalizado para nossos projetos. Este repositório segue a política de suporte do ArcJet.
Este repositório segue a política de segurança do ArcJet.
Licenciado sob a licença Apache, versão 2.0.