我最近一直在阅读有关使用ASP.NET MVC5的很多内容。我不确定的一件事是我读过的书之一,你应该使用HttpServerUtility。你的视图中的HtmlEncode是为了防止XSS攻击,但是我读了一些说视图项自动使用它的东西,除非你使用http raw方法。什么时候在你的视图中使用HttpServerUtility.HtmlEncode是明智的,你怎么知道它何时需要以及何时不必测试XSS注入的每一个输入?
答案 0 :(得分:2)
你有些准确。模型中不实现IHtmlString
的属性将默认编码(因此可防止大多数XSS攻击)。如果它们确实实现了该接口,它们将按原样输出(因为接口假定您正在生成某种形式的标记)。
回答主要问题,“何时谨慎”:当您向页面输出用户输入时。如果您编写了一个自定义帮助程序来传递IHtmlString
,那么在该方法中建议对其进行编码(作为最终输出的一部分)。这适用于可以输出到页面并且最初由用户生成(或之后修改)的任何类型的数据。