diff --git a/routes/createProductReviews.ts b/routes/createProductReviews.ts index 5f5d79fa516..0cac3538926 100644 --- a/routes/createProductReviews.ts +++ b/routes/createProductReviews.ts @@ -13,13 +13,22 @@ import { challenges } from '../data/datacache' const security = require('../lib/insecurity') module.exports = function productReviews () { - return (req: Request, res: Response) => { + return (req: Request, res: Response, next: (err?: Error) => void) => { const user = security.authenticatedUsers.from(req) - challengeUtils.solveIf(challenges.forgedReviewChallenge, () => { return user && user.data.email !== req.body.author }) + const product = req.params?.id + const author = req.body?.author + const message = req.body?.message + + if (typeof product !== 'string' || typeof author !== 'string' || typeof message !== 'string') { + next(new Error('Blocked illegal activity by ' + req.socket.remoteAddress)) + return + } + + challengeUtils.solveIf(challenges.forgedReviewChallenge, () => { return user && user.data.email !== author && user.data.email !== product }) reviewsCollection.insert({ - product: req.params.id, - message: req.body.message, - author: req.body.author, + product, + message, + author, likesCount: 0, likedBy: [] }).then(() => { diff --git a/routes/updateProductReviews.ts b/routes/updateProductReviews.ts index c9c11310c34..d97dd930a17 100644 --- a/routes/updateProductReviews.ts +++ b/routes/updateProductReviews.ts @@ -14,8 +14,13 @@ const security = require('../lib/insecurity') module.exports = function productReviews () { return (req: Request, res: Response, next: NextFunction) => { const user = security.authenticatedUsers.from(req) // vuln-code-snippet vuln-line forgedReviewChallenge + const id = req.body?.id?.toString() + if (typeof id !== 'string') { + next(new Error('Blocked illegal activity by ' + req.socket.remoteAddress)) + return + } db.reviewsCollection.update( // vuln-code-snippet neutral-line forgedReviewChallenge - { _id: req.body.id }, // vuln-code-snippet vuln-line noSqlReviewsChallenge forgedReviewChallenge + { _id: id }, // vuln-code-snippet vuln-line noSqlReviewsChallenge forgedReviewChallenge { $set: { message: req.body.message } }, { multi: true } // vuln-code-snippet vuln-line noSqlReviewsChallenge ).then(