diff --git a/modInfo.json b/modInfo.json index f8a8136..8b30976 100644 --- a/modInfo.json +++ b/modInfo.json @@ -1,4 +1,4 @@ { "name": "Integration with ModSecurity", - "version": "1.0.0" + "version": "1.0.1" } diff --git a/src/index.js b/src/index.js index d86c8da..d517821 100644 --- a/src/index.js +++ b/src/index.js @@ -421,16 +421,32 @@ module.exports = (req, res, logFacilities, config, next) => { return processIntervention(); } - let key = null; - req.rawHeaders.forEach((v) => { - if (key === null) { - key = v; - } else { - transaction.addRequestHeader(key, v); - key = null; + let headerIntervene = false; + Object.keys(req.headers).every((key) => { + if (typeof req.headers[key] == "string") { + securityResponse = transaction.addRequestHeader(key, req.headers[key]); + if (typeof securityResponse === "object") { + headerIntervene = true; + return false; + } + } else if (Array.isArray(req.headers[key])) { + req.headers[key].every((value) => { + securityResponse = transaction.addRequestHeader(key, value); + if (typeof securityResponse === "object") { + headerIntervene = true; + return false; + } + return true; + }); + if (headerIntervene) return false; } + return true; }); + if (headerIntervene) { + return processIntervention(); + } + securityResponse = transaction.processRequestHeaders(); if (typeof securityResponse === "object") { return processIntervention(); diff --git a/tests/index.test.js b/tests/index.test.js index caa3684..01d2892 100644 --- a/tests/index.test.js +++ b/tests/index.test.js @@ -26,7 +26,7 @@ describe("ModSecurity Integration", () => { localAddress: "127.0.0.1", localPort: 8080 }; - req.headers = {}; + req.headers = { Host: "example.com" }; req._readableState = { length: 0, ended: true