2

在 ASP.NET 4 中,我们可以使用 new<%: ... %>运算符来输出 HTML 编码的字符串。是否可以配置ASP.NET 4(在 web.config 中)以便<%= ... %>操作员也可以对字符串进行 HTML 编码?

4

2 回答 2

3

不,幸运的是。

如果您以这种方式配置它,您的开发人员将养成使用<%= ... %>而不是编码的习惯。

如果他们随后从事不同的(正常)项目,他们最终会忘记编码他们的输出。

ASP.Net Razor确实默认为 HTML 编码,因为它没有这个问题。
(没有可以切换到默认不会编码的 Razor 代码)

于 2010-08-04T18:38:32.907 回答
2

就个人而言,我不喜欢这种新<%:语法。我宁愿使用<%= HttpUtility.HtmlEncode(,因为它更明确。

除此之外,它给人一种虚假的安全感,因为它只进行 HTML 编码。例如看这个片段:

function myJavaScriptFunction()
{
    var message = '<%: Person.LastComment %>';
    alert(message);
}

它没有保存,因为它没有使用正确的编码。以下是安全的:

function myJavaScriptFunction()
{
    var message = '<%: AntiXss.JavaScriptEncode(Person.LastComment) %>';
    alert(message);
}

更加明确。

于 2010-08-04T19:01:31.923 回答