在WebMatrix中使用剃须刀是否可以缓解XSS威胁?

时间:2013-02-22 22:21:24

标签: c# razor xss webmatrix html-encode

我有意(在测试中)在WebMatrix C#中分配了以下变量:

string val = "<script type='text/javascript'>alert('XSS Vector')</script>";

稍后在页面中我使用razor将该值直接写入页面。

<p>
    @val
</p>

它写文本,但是以安全的方式(即没有运行警报脚本)

这一点,再加上如果'val'包含一个html实体(例如,&lt;),它也会写出“&lt;”而不是“&lt;”正如我希望页面呈现。

这是因为C#首先运行,然后呈现html吗?

更重要的是,以这种方式使用剃须刀是一种合适的替代html编码,当这样使用时?

1 个答案:

答案 0 :(得分:1)

@Variable语法将HtmlEncode传递给它的任何文本;因此,您可以从字面上看到您设置为字符串值的内容。你是正确的,这是为了XSS保护。这是Razor的一部分; @Variable语法本身。

基本上,使用@Variable语法并不是Html编码的“替代”;它 HTML编码。

相关:如果您想要某些字符串呈现 HTML,您可以在Razor中使用此语法:

@Html.Raw(Variable)

这会导致Html编码。显然,这对用户提供的输入很危险。