From 0c8de40ae5f0e4a5ad747f345a02f606beac621b Mon Sep 17 00:00:00 2001 From: Gowtham M Date: Thu, 4 Dec 2025 14:38:01 +0530 Subject: [PATCH] GWM : helmet --- app/utils/sanitizeInput.js | 31 +++++++++++++++++++++++++++++++ server.js | 13 ++++++++++--- 2 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 app/utils/sanitizeInput.js diff --git a/app/utils/sanitizeInput.js b/app/utils/sanitizeInput.js new file mode 100644 index 0000000..c843d20 --- /dev/null +++ b/app/utils/sanitizeInput.js @@ -0,0 +1,31 @@ +const sanitize = require("sanitize-html"); + +function sanitizeValue(value) { + if (typeof value === "string") { + return sanitize(value, { + allowedTags: [], + allowedAttributes: {}, + }); + } + + if (Array.isArray(value)) { + return value.map(item => sanitizeValue(item)); + } + + if (value !== null && typeof value === "object") { + const sanitizedObj = {}; + for (const key in value) { + sanitizedObj[key] = sanitizeValue(value[key]); + } + return sanitizedObj; + } + + return value; // numbers, booleans, null +} + +module.exports = function sanitizeInput(req, res, next) { + if (req.body) { + req.body = sanitizeValue(req.body); + } + next(); +}; diff --git a/server.js b/server.js index 408ee33..8a1f48a 100644 --- a/server.js +++ b/server.js @@ -8,15 +8,22 @@ const routes = require("./app/routes/routes"); const db = require("./app/models"); const path = require("path"); const cookieParser = require("cookie-parser"); +const sanitizeInput = require("./app/utils/sanitizeInput"); require("dotenv").config(); const app = express(); - +// GLOBAL MIDDLEWARE (body parsing) app.use(express.json()); -app.use(helmet()); -app.use(morgan("dev")); app.use(cookieParser()); +app.use( + helmet({ + contentSecurityPolicy: false, + }) +); +app.use(morgan("dev")); +app.use(sanitizeInput); + // app.use(cors()); const allowedOrigins = [ "http://localhost:5173/", //local