mcp-server-semgrep
Version:
MCP Server for Semgrep Integration - static code analysis with AI
99 lines (74 loc) • 2.71 kB
JavaScript
const express = require('express')
const app = express()
const port = 3000
const puppeteer = require('puppeteer')
app.get('/', async (req, res) => {
const browser = await puppeteer.launch()
const page = await browser.newPage()
const url = `https://${req.query.name}`
// ruleid: express-puppeteer-injection
await page.goto(url)
await page.screenshot({path: 'example.png'})
await browser.close()
res.send('Hello World!')
})
app.post('/test', async (req, res) => {
const browser = await puppeteer.launch()
const page = await browser.newPage()
// ruleid: express-puppeteer-injection
await page.setContent(`${req.body.foo}`)
await page.screenshot({path: 'example.png'})
await browser.close()
res.send('Hello World!')
})
const controller = async (req, res) => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
const body = req.body.foo;
// ruleid: express-puppeteer-injection
await page.setContent('<html>' + body + '</html>');
await page.screenshot({path: 'example.png'});
await browser.close();
res.send('Hello World!');
}
app.post('/test2', async (req, res) => {
const browser = await puppeteer.launch()
const page = await browser.newPage()
// ruleid: express-puppeteer-injection
await page.evaluateOnNewDocument(`${req.body.foo}`)
await page.screenshot({path: 'example.png'})
await browser.close()
res.send('Hello World!')
})
const controller2 = async (req, res) => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
const body = req.body.foo;
// ruleid: express-puppeteer-injection
await page.evaluate('alert(' + body + ')');
await page.screenshot({path: 'example.png'});
await browser.close();
res.send('Hello World!');
}
app.post('/test2', controller)
app.post('/ok-test', async (req, res) => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
// ok: express-puppeteer-injection
await page.goto('https://example.com');
await page.screenshot({path: 'example.png'});
await browser.close();
res.send('Hello World!');
})
const controller = async (req, res) => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
// ok: express-puppeteer-injection
const body = '<div>123</div>';
await page.setContent('<html>' + body + '</html>');
await page.screenshot({path: 'example.png'});
await browser.close();
res.send('Hello World!');
}
app.post('/ok-test2', controller)
app.listen(port, () => console.log(`Example app listening at http://localhost:${port}`))