C# HTML呈现转义字符

C# HTML呈现转义字符,c#,html,asp.net,security,escaping,C#,Html,Asp.net,Security,Escaping,我目前正在努力解决我的网站上的一个主要的永久XSS漏洞。为此,我打电话: this.Title = System.Security.SecurityElement.Escape(this.Title); 在我接受的值上,它正确地转义所有需要转义的字符(,&,等等)。当我在页面的其他位置显示此标题时,出现了问题: <p> @title </p> @title 它会精确地显示字符串,如“<;>;等” 为了解决这个问题,我注意到如果我打电话: <p&

我目前正在努力解决我的网站上的一个主要的永久XSS漏洞。为此,我打电话:

    this.Title = System.Security.SecurityElement.Escape(this.Title);
在我接受的值上,它正确地转义所有需要转义的字符(,&,等等)。当我在页面的其他位置显示此标题时,出现了问题:

<p> @title </p>
@title

它会精确地显示字符串,如“<;>;等”

为了解决这个问题,我注意到如果我打电话:

<p> @html.raw(title) </p>
@html.raw(标题)


值是否正确显示在页面上(、等)。但我担心这仍然会造成漏洞。在页面上正确呈现html的最佳方式是什么?我做错什么了吗?或者我是否正确地使用了html.raw()?

您希望按原样获取和存储标题。然后在输出时转义标题


请参阅上的答案,例如,

您希望按原样获取和存储标题。然后在输出时转义标题


请参阅上的答案,例如,

您可能根本不应该调用
Escape
——只需让Razor自动编码您的输出即可。但是如果我们假设应该使用
Escape
,那么是的,您正在正确地使用
Raw
。只要输出是正确的HTML编码,就可能存在重复。Etcy没有风险您可能根本不应该调用
Escape
,让Razor自动编码您的输出。但是如果我们假设应该使用
Escape
,那么是的,您正确地使用了
Raw
。只要输出是正确的HTML编码,就没有使用etc的风险