AllowHtml不适用于模型

时间:2016-05-02 23:00:11

标签: c# asp.net-mvc xss ef-model-first

我首先使用MVC和模型。我在我的控制器上使用了[ValidateInput(false)],它接受​​了富文本输入。这很好。现在我发现以下帖子允许我使用[AllowHtml]我想要的[MetadataType(typeof(YourEntityMetadata))] public partial class YourEntityClass { } public class YourEntityMetadata { [AllowHtml] public string YourPropertyWithHtml { get; set; } }

AllowHtml

我尝试了这个,但它没有用。出于测试原因,我将<p> lorem <\p>直接添加到自动生成的模型中的属性上,这也无效。在这两种情况下,我都遇到了同样的错误&#34;潜在的危险请求......&#34;

有问题的输入是来自CKEditor的简单富文本[AllowHtml]。 控制器调用一个单独的函数,该函数执行实际写入以访问数据库,并首先访问模型ModelContainer。

自动生成中是否存在可能妨碍<httpRuntime targetFramework="4.6.1" requestValidationMode="2.0" /> 工作的内容。问题是控制器不直接访问或创建实体,而是将字符串传递给另一个创建实体并将其保存到数据库的函数?

修改

我禁用了检查XSRF令牌的过滤器。我已设置请求验证模式:

public int SaveBlock(string blockCont)
{
    var testt = new ViewTest() { BlockContent = blockCont };
    return 0;
}

我将控制器方法剥离为:

    public class ViewTest
{
    [AllowHtml]
    public string BlockContent { get; set; }
}

使用简单的视图模型:

lein change

并且请求仍标有&#34;有潜在危险&#34;错误。

1 个答案:

答案 0 :(得分:0)

我在阅读有关评论时会更多地了解这个问题。我的困惑是,我认为数据注释是在数据写入模型时应用的,而不是在控制器方法中被接受时。

当然,我将字符串发送到控制器并希望在我将其实际写入模型时进行验证的方法是错误的。也许我想要一点点。

对于我的方法,我想尽可能地将我的数据模型与控制器分开(使用存储库),我想前进的唯一方法是发送到控制器的输入的视图模型。但是,在我的情况下,我想我会坚持编码几个非html字符串输入,只允许一个html输入到数据库。