2

如果从数据库中提取链接的名称,您是否应该调用 Html.Encode 方法来清除名称?

例如:

Html.ActionLink(Model.PersonFromDB.FirstName,
                "Action",
                "Controller",
                new RouteValueDictionary { { "id", Model.PersonFromDB.Id } },
                null)

或者:

Html.ActionLink(Html.Encode(Model.PersonFromDB.FirstName),
                "Action",
                "Controller",
                new RouteValueDictionary { { "id", Model.PersonFromDB.Id } },
                null)

这样做是有道理的,以确保没有危险的字符串注入到标签之间的页面中,但是脚本<a></a>锚标签之间的此类可执行文件是什么?

4

3 回答 3

6

不,因为根据SO 上的这个线程, HtmlAction.Link() HTML 已经对值进行了编码,所以你最终会做两次。

于 2010-02-17T20:10:21.737 回答
0

这当然是个好主意,但您可能应该阻止用户输入潜在的恶意字符串作为他们的名字。

于 2010-02-17T20:00:22.283 回答
-1

是的,一点没错。作为一般规则,对于您要输出的最初从不受信任的来源获得的任何 HTML,假设格式已经不是 HTML(并且经过充分审查),您应该始终对字符串进行 HTML 编码以防止注入攻击。

于 2010-02-17T19:56:11.893 回答