处理从 c# 生成的 html 中的嵌套引号
Posted
技术标签:
【中文标题】处理从 c# 生成的 html 中的嵌套引号【英文标题】:dealing with nested quotes in html generated from c# 【发布时间】:2011-01-14 11:27:57 【问题描述】:我正在使用第 3 方库来显示工具提示,如下所示:
string tooltip = "test";
output.Write("onmouseover='Tip(\"" + test + "\");'"); // work fine :)
我遇到了以下情况,我需要引号来格式化:
string tooltip = "<span style='color:red;'>test</span>";
output.Write("onmouseover='Tip(\"" + test + "\");'"); // no working :(
如何在工具提示中转义 html 所需的引号,以免中断函数调用?
【问题讨论】:
【参考方案1】:将"
的任何实例替换为&quot;
,如下所示:
test.Replace( "\"", """ )
【讨论】:
这仍然会导致 XSS 攻击。 我认为您错误地假设字符串测试以某种方式来自最终用户,这不是我从上面的示例中看到的。对我来说,很明显他控制了工具提示。【参考方案2】:这是微软Anti-Xss Library的完美使用
使用它,您可以调用 javascriptEncode 函数,该函数将构建一个如下所示的字符串:
Microsoft.Security.Application.AntiXss.JavaScriptEncode("ab'c\"d")
// 'ab\x27c\x22d'
请注意其中包含引号。
您可以接受它,对其进行 HTML 编码,然后将其直接放入括号中。
类似这样的:
string tooltip = "<span style='color:red;'>test</span>";
output.Write("onmouseover=\"Tip(" + AntiXss.JavaScriptEncode(test) + ");\""); // working :)
【讨论】:
以上是关于处理从 c# 生成的 html 中的嵌套引号的主要内容,如果未能解决你的问题,请参考以下文章