From 1493cacb6962293fecbf3ca51b2f08112c91e725 Mon Sep 17 00:00:00 2001 From: KernelDeimos Date: Sat, 11 May 2024 02:28:18 -0400 Subject: [PATCH] Add rate-limiting to new password change endpoint --- .../src/services/abuse-prevention/EdgeRateLimitService.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/backend/src/services/abuse-prevention/EdgeRateLimitService.js b/packages/backend/src/services/abuse-prevention/EdgeRateLimitService.js index e3214a630..c5852c3aa 100644 --- a/packages/backend/src/services/abuse-prevention/EdgeRateLimitService.js +++ b/packages/backend/src/services/abuse-prevention/EdgeRateLimitService.js @@ -1,5 +1,6 @@ const { Context } = require("../../util/context"); const { asyncSafeSetInterval } = require("../../util/promise"); +const { quot } = require("../../util/strutil"); const { MINUTE, HOUR } = require('../../util/time.js'); const BaseService = require("../BaseService"); @@ -55,6 +56,10 @@ class EdgeRateLimitService extends BaseService { limit: 10, window: HOUR, }, + ['/user-protected/change-password']: { + limit: 10, + window: HOUR, + }, ['login-otp']: { limit: 15, window: 30 * MINUTE, @@ -77,6 +82,9 @@ class EdgeRateLimitService extends BaseService { } check (scope) { + if ( ! this.scopes.hasOwnProperty(scope) ) { + throw new Error(`unrecognized rate-limit scope: ${quot(scope)}`) + } const { window, limit } = this.scopes[scope]; const requester = Context.get('requester');