1
0
mirror of https://github.com/Infisical/infisical.git synced 2025-03-29 22:02:57 +00:00

Increase rate limits for API

This commit is contained in:
Tuan Dang
2023-01-16 22:09:58 +07:00
parent 37ee8148c6
commit 89697df85e
4 changed files with 20 additions and 22 deletions
backend/src

@ -317,7 +317,7 @@ export const getWorkspaceServiceTokens = async (
let serviceTokens; let serviceTokens;
try { try {
const { workspaceId } = req.params; const { workspaceId } = req.params;
// ?? FIX.
serviceTokens = await ServiceToken.find({ serviceTokens = await ServiceToken.find({
user: req.user._id, user: req.user._id,
workspace: workspaceId workspace: workspaceId

@ -1,6 +1,6 @@
import rateLimit from 'express-rate-limit'; import rateLimit from 'express-rate-limit';
// 300 requests per 15 minutes // 450 requests per 15 minutes
const apiLimiter = rateLimit({ const apiLimiter = rateLimit({
windowMs: 15 * 60 * 1000, windowMs: 15 * 60 * 1000,
max: 450, max: 450,
@ -11,23 +11,15 @@ const apiLimiter = rateLimit({
} }
}); });
// 5 requests per hour // 10 requests per minute
const signupLimiter = rateLimit({ const authLimiter = rateLimit({
windowMs: 60 * 60 * 1000, windowMs: 60 * 1000,
max: 10, max: 10,
standardHeaders: true, standardHeaders: true,
legacyHeaders: false legacyHeaders: false
}); });
// 10 requests per hour // 10 requests per hour
const loginLimiter = rateLimit({
windowMs: 60 * 60 * 1000,
max: 25,
standardHeaders: true,
legacyHeaders: false
});
// 5 requests per hour
const passwordLimiter = rateLimit({ const passwordLimiter = rateLimit({
windowMs: 60 * 60 * 1000, windowMs: 60 * 60 * 1000,
max: 10, max: 10,
@ -35,4 +27,8 @@ const passwordLimiter = rateLimit({
legacyHeaders: false legacyHeaders: false
}); });
export { apiLimiter, signupLimiter, loginLimiter, passwordLimiter }; export {
apiLimiter,
authLimiter,
passwordLimiter
};

@ -3,13 +3,13 @@ const router = express.Router();
import { body } from 'express-validator'; import { body } from 'express-validator';
import { requireAuth, validateRequest } from '../../middleware'; import { requireAuth, validateRequest } from '../../middleware';
import { authController } from '../../controllers/v1'; import { authController } from '../../controllers/v1';
import { loginLimiter } from '../../helpers/rateLimiter'; import { authLimiter } from '../../helpers/rateLimiter';
router.post('/token', validateRequest, authController.getNewToken); router.post('/token', validateRequest, authController.getNewToken);
router.post( router.post(
'/login1', '/login1',
loginLimiter, authLimiter,
body('email').exists().trim().notEmpty(), body('email').exists().trim().notEmpty(),
body('clientPublicKey').exists().trim().notEmpty(), body('clientPublicKey').exists().trim().notEmpty(),
validateRequest, validateRequest,
@ -18,7 +18,7 @@ router.post(
router.post( router.post(
'/login2', '/login2',
loginLimiter, authLimiter,
body('email').exists().trim().notEmpty(), body('email').exists().trim().notEmpty(),
body('clientProof').exists().trim().notEmpty(), body('clientProof').exists().trim().notEmpty(),
validateRequest, validateRequest,
@ -27,11 +27,13 @@ router.post(
router.post( router.post(
'/logout', '/logout',
authLimiter,
requireAuth({ requireAuth({
acceptedAuthModes: ['jwt'] acceptedAuthModes: ['jwt']
}), }),
authController.logout authController.logout
); );
router.post( router.post(
'/checkAuth', '/checkAuth',
requireAuth({ requireAuth({

@ -3,11 +3,11 @@ const router = express.Router();
import { body } from 'express-validator'; import { body } from 'express-validator';
import { requireSignupAuth, validateRequest } from '../../middleware'; import { requireSignupAuth, validateRequest } from '../../middleware';
import { signupController } from '../../controllers/v1'; import { signupController } from '../../controllers/v1';
import { signupLimiter } from '../../helpers/rateLimiter'; import { authLimiter } from '../../helpers/rateLimiter';
router.post( router.post(
'/email/signup', '/email/signup',
signupLimiter, authLimiter,
body('email').exists().trim().notEmpty().isEmail(), body('email').exists().trim().notEmpty().isEmail(),
validateRequest, validateRequest,
signupController.beginEmailSignup signupController.beginEmailSignup
@ -15,7 +15,7 @@ router.post(
router.post( router.post(
'/email/verify', '/email/verify',
signupLimiter, authLimiter,
body('email').exists().trim().notEmpty().isEmail(), body('email').exists().trim().notEmpty().isEmail(),
body('code').exists().trim().notEmpty(), body('code').exists().trim().notEmpty(),
validateRequest, validateRequest,
@ -24,7 +24,7 @@ router.post(
router.post( router.post(
'/complete-account/signup', '/complete-account/signup',
signupLimiter, authLimiter,
requireSignupAuth, requireSignupAuth,
body('email').exists().trim().notEmpty().isEmail(), body('email').exists().trim().notEmpty().isEmail(),
body('firstName').exists().trim().notEmpty(), body('firstName').exists().trim().notEmpty(),
@ -42,7 +42,7 @@ router.post(
router.post( router.post(
'/complete-account/invite', '/complete-account/invite',
signupLimiter, authLimiter,
requireSignupAuth, requireSignupAuth,
body('email').exists().trim().notEmpty().isEmail(), body('email').exists().trim().notEmpty().isEmail(),
body('firstName').exists().trim().notEmpty(), body('firstName').exists().trim().notEmpty(),