"Not a Pentest" Trust-Anker: Dieser Guide dient ausschließlich zur Absicherung von API-Endpoints. Keine Angriffswerkzeuge, keine illegalen Aktivitäten.
Was ist API Security Protection?
API Security Protection umfasst die Absicherung von REST Endpoints durch JWT Hardening, Rate Limiting, Input Validation und DDoS-Schutz. Es schützt API-gesteuerte Systeme vor unautorisiertem Zugriff und Missbrauch durch mehrschichtige Sicherheitskontrollen.
70% aller API-Sicherheitsvorfälle resultieren aus fehlender Authentifizierung oder Rate Limiting.
Moltbot API Security: REST Endpoints Protection
Vollständige API Security für Moltbot — von JWT-Hardening über Rate Limiting bis hin zu Input Validation und DDoS-Schutz.
🔐 JWT Authentication Hardening
// moltbot/middleware/jwt-auth.ts
import { NextRequest, NextResponse } from 'next/server';
import { jwtVerify, JWTPayload } from 'jose';
const JWT_SECRET = new TextEncoder().encode(process.env.JWT_SECRET!);
export async function verifyJWT(req: NextRequest): Promise<JWTPayload | null> {
const token = req.headers.get('Authorization')?.replace('Bearer ', '');
if (!token) return null;
try {
const { payload } = await jwtVerify(token, JWT_SECRET, {
issuer: 'clawguru-moltbot',
audience: 'moltbot-api',
algorithms: ['HS256'],
});
return payload;
} catch {
return null;
}
}⚡ Rate Limiting mit Redis
// moltbot/middleware/rate-limit.ts
import { Redis } from '@upstash/redis';
const redis = new Redis({
url: process.env.UPSTASH_REDIS_REST_URL!,
token: process.env.UPSTASH_REDIS_REST_TOKEN!,
});
export async function rateLimit(ip: string, limit = 100, window = 60) {
const key = `rl:${ip}`;
const current = await redis.incr(key);
if (current === 1) await redis.expire(key, window);
return { allowed: current <= limit, remaining: Math.max(0, limit - current) };
}🛡️ Input Validation Schema
// moltbot/lib/validation.ts
import { z } from 'zod';
export const MoltbotRequestSchema = z.object({
target: z.string().url('Muss eine gültige URL sein').max(2048),
action: z.enum(['check', 'scan', 'audit']),
options: z.object({
depth: z.number().int().min(1).max(5).default(2),
timeout: z.number().int().min(1000).max(30000).default(5000),
}).optional(),
});
export type MoltbotRequest = z.infer<typeof MoltbotRequestSchema>;