You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NodeJS中如何防止用户输入引号破坏字符串且保留字符使用权限?

Node.js服务端处理含引号的用户输入:保留字符同时防止注入

要实现保留用户输入的单/双引号,同时避免引号跳出字符串结构,核心是对引号进行转义处理——在引号前添加反斜杠,让解析器将其识别为字符串内容而非结束符。以下是具体实现方式:

1. 针对双引号的转义(适用于生成JS双引号字符串场景)

直接用正则全局替换双引号为转义后的\":

const unfilteredInput = 'I am a hacker and I will "break" out of this string! Muhahahaha!';
const filteredInput = unfilteredInput.replace(/"/g, '\\"');
// 输出结果:I am a hacker and I will \"break\" out of this string! Muhahahaha!

2. 同时处理单引号和双引号

如果你的场景需要兼容两种引号,比如要生成同时包含单双引号的字符串,可以分别转义:

function escapeQuotes(str) {
  // 转义双引号和单引号
  return str.replace(/"/g, '\\"').replace(/'/g, "\\'");
}

const userInput = 'I said "hello" to \'everyone\'';
const sanitizedInput = escapeQuotes(userInput);
// 输出结果:I said \"hello\" to \'everyone\'

关键注意事项

  • 转义规则要匹配使用场景:如果是将输入存入数据库,优先用参数化查询(如MySQL的?占位符、MongoDB的参数化方法),比手动转义更安全;如果是生成前端JS代码或JSON字符串,上述转义方法完全适用。
  • 必须在服务端处理:客户端转义可能被篡改,服务端处理才能从根源避免注入风险。

内容的提问来源于stack exchange,提问作者Bananos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 07:23:17