Skip to content

Commit 57d23d5

Browse files
authored
Merge pull request #2 from ZowWeb/security
🔒 Add security for request & client limitations
2 parents 8487440 + da132c5 commit 57d23d5

File tree

3 files changed

+30
-2
lines changed

3 files changed

+30
-2
lines changed

middlewares/rateLimiter.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
const rateLimit = require('express-rate-limit')
2+
3+
const rateLimiter = rateLimit({
4+
windowMs: 5 * 60 * 1000, // 5 mins in milliseconds
5+
max: 4,
6+
message: { error429: 'Sorry, you can make only 4 requests every 5 minutes!' },
7+
headers: true,
8+
})
9+
10+
module.exports = rateLimiter

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
"cors": "^2.8.5",
1414
"dotenv": "^10.0.0",
1515
"express": "^4.17.1",
16+
"express-rate-limit": "^5.5.1",
1617
"mongoose": "^6.0.5",
1718
"morgan": "^1.10.0",
1819
"uuid": "^8.3.2"

server.js

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,34 @@ const cors = require('cors')
44
const morgan = require('morgan')
55
require('dotenv').config()
66

7+
const rateLimiter = require('./middlewares/rateLimiter')
78
const api = require('./routes/api')
89
const connectDB = require('./connectDB')
910

1011
const app = express()
1112
const PORT = process.env.PORT || 5000
1213

13-
app.use(cors())
14-
app.use(morgan('dev'))
1514
app.use(express.json())
1615
app.use(express.urlencoded({ extended: false }))
1716

17+
// Middlewares
18+
19+
// Logger
20+
app.use(morgan('dev'))
21+
22+
// CORS
23+
const corsOptions = {
24+
credentials: true,
25+
origin: [
26+
/wallet.zohaib.in$/,
27+
/localhost/,
28+
],
29+
}
30+
app.use(cors(corsOptions))
31+
32+
// Rate limiter
33+
app.use(rateLimiter)
34+
1835
// Use Routes
1936
if (process.env.NODE_ENV === 'development') {
2037
// Simulate delay while accessing db on local

0 commit comments

Comments
 (0)