HTML编码/解码和HTML.Raw

时间:2018-07-03 23:38:18

标签: c# asp.net-mvc entity-framework asp.net-mvc-5 summernote

我听说不建议在Razor视图中使用HTML.Raw,如果是这样,我有问题。

我正在使用Entity Framework与我的SQL DB进行交互。另外,我正在使用SummerNote作为前端的编辑器。

现在,我的视图代码位于@ {}块中,我相信它会进行一些编码/解码。

这种情况是,用户在SummerNote编辑器中输入了一些文本,并应用了某些格式(例如,将单词加粗),然后单击保存。这将生成一个HTML字符串并将其传递给我的控制器:

<p>Test <b>string </b>with formatting.</p>

在控制器中,我使用HTML编码进行编码:

customerData.Description = HttpUtility.HtmlEncode(summerNoteFieldData);

然后将其发送到DB。在DB中如下所示:

&lt;p&gt;Test &lt;b&gt;string &lt;/b&gt;with formatting.&lt;/p&gt;

然后在视图中展示它时,我这样做:

<div class="summernote">@Html.Raw(@HttpUtility.HtmlDecode(@Model))</div>

因此,如果我删除Html.Raw,则将看到上面的HTML字符串,而不是格式化的HTML字符串。

这是解决此问题的安全正确的方法吗?可以改善吗?

谢谢您的帮助。

1 个答案:

答案 0 :(得分:1)

在视图中打印时,您应该使用HTML编码(使用@Model)。

请勿在其他任何地方编码或解码;不要将编码的内容存储在数据库中。