File tree Expand file tree Collapse file tree 4 files changed +32
-0
lines changed Expand file tree Collapse file tree 4 files changed +32
-0
lines changed Original file line number Diff line number Diff line change 5757 "date-fns" : " ^3.6.0" ,
5858 "dotenv" : " ^16.4.5" ,
5959 "express" : " 4.19.2" ,
60+ "express-rate-limiter" : " ^1.3.1" ,
6061 "helmet" : " ^7.1.0" ,
6162 "http-status-codes" : " ^2.3.0" ,
6263 "joi" : " ^17.12.2" ,
7475 "@types/bcrypt" : " ^5.0.2" ,
7576 "@types/cors" : " ^2.8.17" ,
7677 "@types/express" : " ^4.17.21" ,
78+ "@types/express-rate-limit" : " ^6.0.0" ,
7779 "@types/jest" : " ^29.5.12" ,
7880 "@types/jsonwebtoken" : " ^9.0.6" ,
7981 "@types/node" : " ^20.11.30" ,
Original file line number Diff line number Diff line change @@ -5,6 +5,7 @@ import helmet from 'helmet';
55import { bindModel } from './config/db' ;
66import genericErrorHandler from './middlewares/genericErrorHandler' ;
77import notFoundHandler from './middlewares/notFoundHandler' ;
8+ import rateLimitMiddleware from './middlewares/rateLimitHandler' ;
89import transactionHandler from './middlewares/transactionHandler' ;
910import routes from './routes' ;
1011
@@ -15,6 +16,7 @@ bindModel();
1516app . use ( cors ( ) ) ;
1617app . use ( helmet ( ) ) ;
1718app . use ( transactionHandler ) ;
19+ app . use ( rateLimitMiddleware ) ;
1820app . use ( express . json ( { limit : '300kb' } ) ) ;
1921app . use ( express . urlencoded ( { extended : true } ) ) ;
2022
Original file line number Diff line number Diff line change 1+ import { rateLimit } from 'express-rate-limit' ;
2+
3+ // write express rateLimit best practices
4+ const rateLimitMiddleware = rateLimit ( {
5+ windowMs : 15 * 60 * 1000 , // 15 minutes
6+ max : 100 , // limit each IP to 100 requests per windowMs
7+ message : 'Too many requests from this IP, please try again after 15 minutes' ,
8+ headers : true
9+ } ) ;
10+
11+ export default rateLimitMiddleware ;
Original file line number Diff line number Diff line change 850850 dependencies :
851851 " @types/node" " *"
852852
853+ " @types/express-rate-limit@^6.0.0 " :
854+ version "6.0.0"
855+ resolved "https://registry.yarnpkg.com/@types/express-rate-limit/-/express-rate-limit-6.0.0.tgz#11a314477895a8a888958f27650ed0d1ddad01b0"
856+ integrity sha512-nZxo3nwU20EkTl/f2eGdndQkDIJYwkXIX4S3Vrp2jMdSdFJ6AWtIda8gOz0wiMuOFoeH/UUlCAiacz3x3eWNFA==
857+ dependencies :
858+ express-rate-limit "*"
859+
853860" @types/express-serve-static-core@^4.17.33 " :
854861 version "4.17.43"
855862 resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz#10d8444be560cb789c4735aea5eac6e5af45df54"
@@ -2391,6 +2398,16 @@ expect@^29.0.0, expect@^29.7.0:
23912398 jest-message-util "^29.7.0"
23922399 jest-util "^29.7.0"
23932400
2401+ express-rate-limit@* :
2402+ version "7.2.0"
2403+ resolved "https://registry.yarnpkg.com/express-rate-limit/-/express-rate-limit-7.2.0.tgz#06ce387dd5388f429cab8263c514fc07bf90a445"
2404+ integrity sha512-T7nul1t4TNyfZMJ7pKRKkdeVJWa2CqB8NA1P8BwYaoDI5QSBZARv5oMS43J7b7I5P+4asjVXjb7ONuwDKucahg==
2405+
2406+ express-rate-limiter@^1.3.1 :
2407+ version "1.3.1"
2408+ resolved "https://registry.yarnpkg.com/express-rate-limiter/-/express-rate-limiter-1.3.1.tgz#4c3444e796969d971817abdbb6a3b8a86fcda9b4"
2409+ integrity sha512-qLRc4ZkyCcfUCjPtVjwQOtf4OYPc7hc6ObOFemeeVYLlbam541/B7R33VvhztFsBGRUIT/wJW/oJz8n5k+fRfw==
2410+
23942411express@4.19.2 :
23952412 version "4.19.2"
23962413 resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465"
You can’t perform that action at this time.
0 commit comments