【问题标题】:Where to process/sanitize database input in ASP.NET MVC3在 ASP.NET MVC3 中处理/清理数据库输入的位置
【发布时间】:2012-02-20 17:47:07
【问题描述】:

我认为标题确实涵盖了这个问题,但我还是会解释这个问题。

假设我有一个用户提交了评论,并且在该评论中他被允许使用 Markdown。 现在我想在服务器上解析 Markdown 的注释并将 Markdown 语法转换为 HTML,但去掉任何 html 或其他不需要的语法,然后将其保存在数据库中。我应该在哪里做这个?我应该在控制器中还是在模型验证期间这样做?

一个例子将不胜感激。

【问题讨论】:

    标签: c# asp.net-mvc-3 model-view-controller


    【解决方案1】:

    您通常会在控制器之外执行此操作,并将其传递给一个类以清理数据。如果你只想清理传入的 HTML,你可以使用 antixss 库的 Sanitizer.GetSafeHtmlFragment()

    如果您希望将规则显示给用户 pm 验证,那么您可以考虑在您的模型中实现 IValidateableObject,但我实际上仍然不会在这里进行过滤。

    【讨论】:

    • 是的,我知道将它传递给一个单独的类,但我只是想知道我应该在 MVC 逻辑的哪个位置执行此操作。阅读您的答案,我猜它是控制器。
    • 是的,我不会在模型本身中这样做。您可以在将视图模型映射到的 POCO 对象中使用此方法(如果您正在使用视图模型),但只需确保您的 poco 本身没有持久性逻辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 2011-07-18
    • 2012-08-11
    • 2023-04-06
    • 2016-04-23
    • 1970-01-01
    相关资源
    最近更新 更多