feat: enable rate limit on API server (#15)
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
const express = require('express');
|
||||
const RateLimit = require('express-rate-limit');
|
||||
const path = require('path');
|
||||
const { Sequelize } = require('sequelize');
|
||||
const app = express();
|
||||
@@ -15,6 +16,14 @@ app.use(cors(corsOptions));
|
||||
// enable json middleware
|
||||
app.use(express.json());
|
||||
|
||||
// enable rate limiter
|
||||
const limiter = RateLimit({
|
||||
windowMs: 60 * 60 * 1000, // 1h
|
||||
max: 1000, // 1000 requests per hour
|
||||
message: 'Too many requests from this IP, please try again after an hour',
|
||||
});
|
||||
app.use(limiter);
|
||||
|
||||
// Specify the directory to serve static files
|
||||
app.use(express.static(path.join(__dirname, 'public')));
|
||||
|
||||
|
||||
21
backend/package-lock.json
generated
21
backend/package-lock.json
generated
@@ -12,6 +12,7 @@
|
||||
"bcrypt": "^5.1.1",
|
||||
"cors": "^2.8.5",
|
||||
"express": "^4.18.2",
|
||||
"express-rate-limit": "^7.3.1",
|
||||
"jsonwebtoken": "^9.0.2",
|
||||
"multer": "^1.4.5-lts.1",
|
||||
"sequelize": "^6.36.0",
|
||||
@@ -1132,6 +1133,20 @@
|
||||
"node": ">= 0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/express-rate-limit": {
|
||||
"version": "7.3.1",
|
||||
"resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.3.1.tgz",
|
||||
"integrity": "sha512-BbaryvkY4wEgDqLgD18/NSy2lDO2jTuT9Y8c1Mpx0X63Yz0sYd5zN6KPe7UvpuSVvV33T6RaE1o1IVZQjHMYgw==",
|
||||
"engines": {
|
||||
"node": ">= 16"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/express-rate-limit"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"express": "4 || 5 || ^5.0.0-beta.1"
|
||||
}
|
||||
},
|
||||
"node_modules/ext": {
|
||||
"version": "1.7.0",
|
||||
"resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
|
||||
@@ -4292,6 +4307,12 @@
|
||||
"vary": "~1.1.2"
|
||||
}
|
||||
},
|
||||
"express-rate-limit": {
|
||||
"version": "7.3.1",
|
||||
"resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.3.1.tgz",
|
||||
"integrity": "sha512-BbaryvkY4wEgDqLgD18/NSy2lDO2jTuT9Y8c1Mpx0X63Yz0sYd5zN6KPe7UvpuSVvV33T6RaE1o1IVZQjHMYgw==",
|
||||
"requires": {}
|
||||
},
|
||||
"ext": {
|
||||
"version": "1.7.0",
|
||||
"resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
"bcrypt": "^5.1.1",
|
||||
"cors": "^2.8.5",
|
||||
"express": "^4.18.2",
|
||||
"express-rate-limit": "^7.3.1",
|
||||
"jsonwebtoken": "^9.0.2",
|
||||
"multer": "^1.4.5-lts.1",
|
||||
"sequelize": "^6.36.0",
|
||||
|
||||
Reference in New Issue
Block a user