代码之家  ›  专栏  ›  技术社区  ›  Chris F

在ASP.NET MVC中生成actionLinks时是否应调用html.encode

  •  2
  • Chris F  · 技术社区  · 16 年前

    如果从数据库中提取链接的名称,是否应该调用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> 标记,但脚本和此类可执行的锚标记之间?

    3 回复  |  直到 13 年前
        1
  •  6
  •   Community Mohan Dere    9 年前

    不,因为根据 this thread on SO HtmlAction.Link() HTML已经对值进行了编码,所以最终会执行两次。

        2
  •  0
  •   Kevin Pang    16 年前

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

        3
  •  -1
  •   casperOne    16 年前

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