Skip to content

Cross Site Scripting "XSS"

r20222 edited this page Aug 7, 2023 · 5 revisions

Ik ben erachter gekomen dat je berichten kan stylen in het formulier door gewoon zoiets simpels als <h1 style="background-color:hotpink;">Space</h1> toe te voegen in het bericht.

image

Dit word Cross Site Scripting genoemd. Ik heb er op wikipedia over gelezen en op deze manier kunnen er ook vervelende dingen naar je website worden upgeload. Daarom is het belangrijk om hiervoor beveiliging toe te voegen.

Met de volgende npm package kan je XSS voorkomen: express-xss-sanitizer

Nadat ik deze package had geïnstaleerd heb ik in de index.js de volgende code toegevoegd:

// importeer express om het te kunnen gebruiken
import express from 'express'

// importeer de express-xss-sanitizer
import bodyParser from 'body-parser';
import { xss } from 'express-xss-sanitizer';

// Maak een nieuwe express app
const app = express()

// deze code is om xss te voorkomen
app.use(bodyParser.json({ limit: '1kb' }));
app.use(bodyParser.urlencoded({ extended: true, limit: '1kb' }));
app.use(xss());

Hiermee lukte het om styling weg te halen, maar html tags bleven helaas. Ik snapte niet waarom en ik heb heel veel dingen uitgeprobeerd. Nu kan ik met code die ik kreeg van chatgpt alle rare tekens weghalen uit tekst met de volgende code, hierdoor wordt het toevoegen van html tags ook onmogelijk:

// Middleware om HTML-tags te verwijderen
app.use((req, res, next) => {
  for (const key in req.body) {
    if (typeof req.body[key] === 'string') {
      req.body[key] = req.body[key].replace(/<\/?[^>]+(>|$)/g, '');
    }
  }
  next();
});

Na te testen blijkt dat ik alsnog wel rare tekens kan gebruiken, maar de html tags worden weggehaald. Bekijk het volgende bericht:

image

Clone this wiki locally