diff --git a/package.json b/package.json index 99ce19365..0b6248be9 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "dotenv": "^8.2.0", "electrum-client": "github:janoside/electrum-client", "express": "^4.17.1", + "express-rate-limit": "^6.6.0", "express-session": "^1.17.1", "jstransformer-markdown-it": "^2.1.0", "lru-cache": "^5.1.1", diff --git a/routes/baseActionsRouter.js b/routes/baseActionsRouter.js index 4f538ac70..59e78f1b5 100644 --- a/routes/baseActionsRouter.js +++ b/routes/baseActionsRouter.js @@ -2,6 +2,7 @@ var debug = require("debug"); var debugLog = debug("bchexp:router"); var express = require('express'); +const rateLimit = require('express-rate-limit'); var csurf = require('csurf'); var router = express.Router(); var util = require('util'); @@ -979,7 +980,15 @@ router.get("/tx/:transactionId", function(req, res, next) { }); }); -router.get("/address/:address", async (req, res) => { +const addressLimiter = rateLimit({ + windowMs: 1 * 60 * 1000, + max: 1, + standardHeaders: true, + legacyHeaders: false, +}); + + +router.get("/address/:address", addressLimiter, async (req, res) => { var limit = config.site.addressTxPageSize; var offset = 0; var sort = "desc";