Veiligheidsgids · Veilig vibecoden
Zonder limieten kan één script je server platleggen, je wachtwoorden raden of je AI-budget in een nacht opmaken.
Een route die een AI-model aanroept kost geld per verzoek. Een loginroute kan eindeloos wachtwoorden laten proberen. Zonder limieten is het een kwestie van tijd voordat iemand daar misbruik van maakt.
Een publiek AI-formulier zonder limiet kan in korte tijd een hoge rekening opleveren.
Zonder limiet kan een aanvaller duizenden wachtwoorden per minuut proberen.
Als laatste vangnet hoort er een uitgavenlimiet bij de aanbieder te staan.
De route beperkt het aantal verzoeken per IP, valideert de lengte van de vraag en begrenst de output van het model.
Loop dit na voordat je verder gaat of iets online zet.
export async function POST(req: Request) {
const { question } = await req.json();
// Iedereen kan dit onbeperkt aanroepen, met onbeperkt lange invoer
return Response.json(await askModel(question));
}export async function POST(req: Request) {
const ip = req.headers.get("x-forwarded-for") ?? "unknown";
if (!limiter.allow(ip)) {
return Response.json({ error: "Te veel verzoeken. Probeer het zo opnieuw." }, { status: 429 });
}
const { question } = Question.parse(await req.json()); // max 2000 tekens
return Response.json(await askModel(question, { maxOutputTokens: 800 }));
}