Compare commits
2 commits
Author | SHA1 | Date | |
---|---|---|---|
d4ebe21dee | |||
daebfa53d5 |
3 changed files with 25 additions and 9 deletions
|
@ -1,4 +1,4 @@
|
||||||
{
|
{
|
||||||
"name": "Integration with ModSecurity",
|
"name": "Integration with ModSecurity",
|
||||||
"version": "Nightly-GitMain"
|
"version": "1.0.1"
|
||||||
}
|
}
|
||||||
|
|
30
src/index.js
30
src/index.js
|
@ -421,15 +421,31 @@ module.exports = (req, res, logFacilities, config, next) => {
|
||||||
return processIntervention();
|
return processIntervention();
|
||||||
}
|
}
|
||||||
|
|
||||||
let key = null;
|
let headerIntervene = false;
|
||||||
req.rawHeaders.forEach((v) => {
|
Object.keys(req.headers).every((key) => {
|
||||||
if (key === null) {
|
if (typeof req.headers[key] == "string") {
|
||||||
key = v;
|
securityResponse = transaction.addRequestHeader(key, req.headers[key]);
|
||||||
} else {
|
if (typeof securityResponse === "object") {
|
||||||
transaction.addRequestHeader(key, v);
|
headerIntervene = true;
|
||||||
key = null;
|
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();
|
securityResponse = transaction.processRequestHeaders();
|
||||||
if (typeof securityResponse === "object") {
|
if (typeof securityResponse === "object") {
|
||||||
|
|
|
@ -26,7 +26,7 @@ describe("ModSecurity Integration", () => {
|
||||||
localAddress: "127.0.0.1",
|
localAddress: "127.0.0.1",
|
||||||
localPort: 8080
|
localPort: 8080
|
||||||
};
|
};
|
||||||
req.headers = {};
|
req.headers = { Host: "example.com" };
|
||||||
req._readableState = {
|
req._readableState = {
|
||||||
length: 0,
|
length: 0,
|
||||||
ended: true
|
ended: true
|
||||||
|
|
Loading…
Reference in a new issue