代码之家  ›  专栏  ›  技术社区  ›  Roman

输入净化怎么办?

  •  0
  • Roman  · 技术社区  · 14 年前

    3 回复  |  直到 14 年前
        1
  •  3
  •   Ben Elder    14 年前

    dataannotation是模型验证的良好开端。见 this link 有关如何设置数据批注的详细信息。它们可以与Microsoft MVC javascript库或jQuery结合使用来执行客户端验证,另外还可以使用服务器端验证模型绑定后是否有效。见 ModelState.IsValid 财产。

    虽然注释可能有助于防止和捕获错误的用户输入,但它们不会为您“清理”输入。如果您愿意接受错误的输入并处理其清理,那么自定义模型绑定器将是一个很好的起点。斯科特提供了 good scenario of how to implement one here. . 在自定义活页夹中,可以通过一系列字符串清理方法传递文本输入,以去掉不需要的字符或标准化格式等。

        2
  •  3
  •   Darin Dimitrov    14 年前

    HtmlHelper类是用于HTML输出而不是输入的,所以我不明白您没有做好用户输入的卫生工作是什么意思。有不同的方法可以进行输入验证,如数据注释或使用第三方框架,如 FluentValidation . 如果使用的是SQL数据库,还应该确保使用准备好的语句和参数化查询来避免SQL注入。此外,当您需要在页面上显示用户输入时,应始终确保使用<%= Html.Encode("some user input") %> 或更新的语法 <%: "some user input" %> .

        3
  •  2
  •   Omar    14 年前

    我建议您不要清理输入,而是清理输出。

    这样可以避免不适当的卫生或损坏实际的用户输入。

    让用户提交HTML,只要确保它在显示时始终是编码的。

    正如达林所说,使用 <%: %> 语法或 <%= Html.Encode() %> 来处理这个