Rate Limiter
Prevents abuse & DDoS attacks by limiting requests per IP.
securityexpress
v2.0.0middleware
Overview
Implements express-rate-limit middleware for controlling request frequency.
Installation
CLI
npx backternity add rate-limiter
What This Does
Adds rate-limiting middleware to protect routes.
Files & Folders Created
| File / Path | Description |
|---|---|
| /middleware/rateLimiter.js | Preconfigured limiter middleware. |
Files to be modified
| File / Path | Description |
|---|---|
| server.js | Applies limiter globally. |
Configuration
# Environment Variables RATE_LIMIT_WINDOW_MS=60000 RATE_LIMIT_MAX_REQUESTS=100
Frontend Integration
The rate limiter protects your API endpoints from abuse. When rate limits are exceeded, specific HTTP responses are returned.
GET/api/test-endpoint
Test any protected endpoint to see rate limiting in action.
GET/api/test-endpoint
Response when rate limit is exceeded.
GET/api/rate-limit/status
Check current rate limit status for your IP.
Example
1// app/components/RateLimitTester.jsx
2'use client';
3import { useState } from 'react';
4
5export default function RateLimitTester() {
6 const [result, setResult] = useState('');
7 const [requestCount, setRequestCount] = useState(0);
8
9 const testRateLimit = async () => {
10 try {
11 const res = await fetch('/api/test-endpoint');
12 const data = await res.json();
13
14 if (res.ok) {
15 setRequestCount(prev => prev + 1);
16 setResult(`✅ Request ${requestCount + 1} successful. ${data.rateLimit?.remaining || 'N/A'} requests remaining.`);
17 } else {
18 setResult(`❌ Rate limited! ${data.message}`);
19 }
20 } catch (error) {
21 setResult(`⚠️ Error: ${error.message}`);
22 }
23 };
24
25 return (
26 <div className="p-4 border border-white/10 rounded-lg bg-black/30 text-white">
27 <h3 className="text-lg font-semibold mb-3">Rate Limit Tester</h3>
28 <button
29 onClick={testRateLimit}
30 className="bg-emerald-600 hover:bg-emerald-700 px-4 py-2 rounded font-medium"
31 >
32 Send Request ({requestCount} sent)
33 </button>
34 <p className="text-sm text-gray-300 mt-2">{result}</p>
35 </div>
36 );
37}Usage
1const rateLimiter = require('./middleware/rateLimiter');
2app.use(rateLimiter);