diff --git a/src/backend/src/services/ShareService.js b/src/backend/src/services/ShareService.js index 8c25108d0..e3754648a 100644 --- a/src/backend/src/services/ShareService.js +++ b/src/backend/src/services/ShareService.js @@ -266,6 +266,11 @@ class ShareService extends BaseService { // featureflag({ feature: 'share' }), ], handler: async (req, res) => { + const svc_edgeRateLimit = req.services.get('edge-rate-limit'); + if ( ! svc_edgeRateLimit.check('verify-pass-recovery-token') ) { + return res.status(429).send('Too many requests.'); + } + const actor = Actor.adapt(req.user); if ( ! (actor.type instanceof UserActorType) ) { throw APIError.create('forbidden'); diff --git a/src/backend/src/services/abuse-prevention/EdgeRateLimitService.js b/src/backend/src/services/abuse-prevention/EdgeRateLimitService.js index 3d9963971..2cbcde0c5 100644 --- a/src/backend/src/services/abuse-prevention/EdgeRateLimitService.js +++ b/src/backend/src/services/abuse-prevention/EdgeRateLimitService.js @@ -44,6 +44,10 @@ class EdgeRateLimitService extends BaseService { limit: 10, window: 15 * MINUTE, }, + ['share']: { + limit: 30, + window: 1 * MINUTE, + }, ['send-confirm-email']: { limit: 10, window: HOUR,