feat: integrate rate limiting and enhance security features
- Added @convex-dev/rate-limiter dependency to manage request limits effectively. - Implemented rate limiting configurations for IPs, users, and endpoints to prevent abuse and enhance security. - Introduced new security analysis endpoint to detect potential attacks based on incoming requests. - Updated backend schema to include rate limit configurations and various cyber attack types for improved incident tracking. - Enhanced existing security functions to incorporate rate limiting checks, ensuring robust protection against brute force and other attacks.
This commit is contained in:
134
packages/backend/convex/_generated/api.d.ts
vendored
134
packages/backend/convex/_generated/api.d.ts
vendored
@@ -2226,4 +2226,138 @@ export declare const components: {
|
||||
updateMany: FunctionReference<"mutation", "internal", any, any>;
|
||||
};
|
||||
};
|
||||
rateLimiter: {
|
||||
lib: {
|
||||
checkRateLimit: FunctionReference<
|
||||
"query",
|
||||
"internal",
|
||||
{
|
||||
config:
|
||||
| {
|
||||
capacity?: number;
|
||||
kind: "token bucket";
|
||||
maxReserved?: number;
|
||||
period: number;
|
||||
rate: number;
|
||||
shards?: number;
|
||||
start?: null;
|
||||
}
|
||||
| {
|
||||
capacity?: number;
|
||||
kind: "fixed window";
|
||||
maxReserved?: number;
|
||||
period: number;
|
||||
rate: number;
|
||||
shards?: number;
|
||||
start?: number;
|
||||
};
|
||||
count?: number;
|
||||
key?: string;
|
||||
name: string;
|
||||
reserve?: boolean;
|
||||
throws?: boolean;
|
||||
},
|
||||
{ ok: true; retryAfter?: number } | { ok: false; retryAfter: number }
|
||||
>;
|
||||
clearAll: FunctionReference<
|
||||
"mutation",
|
||||
"internal",
|
||||
{ before?: number },
|
||||
null
|
||||
>;
|
||||
getServerTime: FunctionReference<"mutation", "internal", {}, number>;
|
||||
getValue: FunctionReference<
|
||||
"query",
|
||||
"internal",
|
||||
{
|
||||
config:
|
||||
| {
|
||||
capacity?: number;
|
||||
kind: "token bucket";
|
||||
maxReserved?: number;
|
||||
period: number;
|
||||
rate: number;
|
||||
shards?: number;
|
||||
start?: null;
|
||||
}
|
||||
| {
|
||||
capacity?: number;
|
||||
kind: "fixed window";
|
||||
maxReserved?: number;
|
||||
period: number;
|
||||
rate: number;
|
||||
shards?: number;
|
||||
start?: number;
|
||||
};
|
||||
key?: string;
|
||||
name: string;
|
||||
sampleShards?: number;
|
||||
},
|
||||
{
|
||||
config:
|
||||
| {
|
||||
capacity?: number;
|
||||
kind: "token bucket";
|
||||
maxReserved?: number;
|
||||
period: number;
|
||||
rate: number;
|
||||
shards?: number;
|
||||
start?: null;
|
||||
}
|
||||
| {
|
||||
capacity?: number;
|
||||
kind: "fixed window";
|
||||
maxReserved?: number;
|
||||
period: number;
|
||||
rate: number;
|
||||
shards?: number;
|
||||
start?: number;
|
||||
};
|
||||
shard: number;
|
||||
ts: number;
|
||||
value: number;
|
||||
}
|
||||
>;
|
||||
rateLimit: FunctionReference<
|
||||
"mutation",
|
||||
"internal",
|
||||
{
|
||||
config:
|
||||
| {
|
||||
capacity?: number;
|
||||
kind: "token bucket";
|
||||
maxReserved?: number;
|
||||
period: number;
|
||||
rate: number;
|
||||
shards?: number;
|
||||
start?: null;
|
||||
}
|
||||
| {
|
||||
capacity?: number;
|
||||
kind: "fixed window";
|
||||
maxReserved?: number;
|
||||
period: number;
|
||||
rate: number;
|
||||
shards?: number;
|
||||
start?: number;
|
||||
};
|
||||
count?: number;
|
||||
key?: string;
|
||||
name: string;
|
||||
reserve?: boolean;
|
||||
throws?: boolean;
|
||||
},
|
||||
{ ok: true; retryAfter?: number } | { ok: false; retryAfter: number }
|
||||
>;
|
||||
resetRateLimit: FunctionReference<
|
||||
"mutation",
|
||||
"internal",
|
||||
{ key?: string; name: string },
|
||||
null
|
||||
>;
|
||||
};
|
||||
time: {
|
||||
getServerTime: FunctionReference<"mutation", "internal", {}, number>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user