C#如何移除字符串中的JS代码片段 防范XSS风险的高效实现方案
ASP.NET C# 清理输入中JS代码片段的最高效实现方案
适用场景说明
接收的用户输入中混杂任意JS代码片段,需要清除危险代码保留正常文本内容。
方案1:官方AntiXss处理(推荐,安全性和性能最优)
这是生产环境的首选方案,无需自行匹配规则,微软官方维护的过滤逻辑可覆盖几乎所有JS注入场景,性能为原生优化级别:
- 先安装NuGet包
AntiXss - 直接调用封装好的安全方法即可:
using Microsoft.Security.Application; // 示例输入:abcdalert(document.cookie); string rawInput = "你的原始输入内容"; string safeOutput = AntiXssEncoder.GetSafeHtmlFragment(rawInput); // 输出结果自动清除所有JS代码,仅保留合法文本:abcd
方案2:预编译正则处理(适合轻量简单场景)
如果你的需求仅为清除固定格式的括号包裹JS片段,不需要完整XSS防护,可以用预编译正则实现,性能远高于动态正则:
// 类全局定义预编译正则,仅编译一次可重复调用 private static readonly Regex JsSnippetRegex = new Regex(@"\([\s\S]*?\);?", RegexOptions.Compiled); public string CleanInput(string rawInput) { if (string.IsNullOrEmpty(rawInput)) return rawInput; return JsSnippetRegex.Replace(rawInput, string.Empty); }
注意:自定义正则存在被绕过的风险,面向公网的业务场景禁止单独使用该方案。
内容的提问来源于stack exchange,提问作者Abhid
相关产品推荐
相关产品推荐

