diff --git a/client/package.json b/client/package.json index efe9470..1447419 100644 --- a/client/package.json +++ b/client/package.json @@ -10,6 +10,7 @@ "@testing-library/user-event": "^13.5.0", "axios": "^0.25.0", "bootstrap": "^5.1.3", + "dompurify": "^3.0.6", "react": "^17.0.2", "react-bootstrap": "^2.1.1", "react-copy-to-clipboard": "^5.0.4", diff --git a/client/src/components/Blog/Blog.jsx b/client/src/components/Blog/Blog.jsx index d741ac5..e479e78 100644 --- a/client/src/components/Blog/Blog.jsx +++ b/client/src/components/Blog/Blog.jsx @@ -10,6 +10,7 @@ import axios from "axios"; import NavBar from "../NavBar/NavBar"; import Footer from "../Footer/Footer"; import "./Blog.css"; +import DOMPurify from 'dompurify'; export default function Blog() { const { id } = useParams(); @@ -180,7 +181,7 @@ export default function Blog() {

{blog.title}

diff --git a/server/package.json b/server/package.json index a0fbf80..b5ecd64 100644 --- a/server/package.json +++ b/server/package.json @@ -22,6 +22,7 @@ "express": "^4.17.2", "jsonwebtoken": "^8.5.1", "mongoose": "^6.1.8", - "multer": "^1.4.4" + "multer": "^1.4.4", + "sanitize-html": "^2.11.0" } } diff --git a/server/routes/user.js b/server/routes/user.js index 9ac57c4..b57236b 100644 --- a/server/routes/user.js +++ b/server/routes/user.js @@ -5,6 +5,7 @@ const multer = require("multer"); const cloudinary = require("cloudinary").v2; const User = require("../models/user.model"); const Blog = require("../models/blog.model"); +const sanitizeHtml = require('sanitize-html'); const { CLOUD_NAME, API_KEY, API_SECRET } = process.env; @@ -129,6 +130,9 @@ Router.post("/post/comment/:id", async (req, res) => { Router.post("/create", upload.single("image"), async (req, res) => { const { title, content, date, token } = req.body; + const sanitizedTitle = sanitizeHtml(title); + const sanitizedContent = sanitizeHtml(content); + if (req.file) { cloudinary.uploader.upload( req.file.path, @@ -148,8 +152,8 @@ Router.post("/create", upload.single("image"), async (req, res) => { return res.status(404).send({ error: "User not found" }); } const blog = new Blog({ - title, - content, + title: sanitizedTitle, + content: sanitizedContent, image, cloudinaryId, author: user.name,