gpt4 book ai didi

c# - 如何扩展 Html.Raw 以便在显示之前清理危险的 HTML 数据

转载 作者:太空宇宙 更新时间:2023-11-03 12:50:22 24 4
gpt4 key购买 nike

我继承了一个网络应用程序,它已经有一些输入字段接受来自用户的纯 Html。 (您可能明白 XSS(跨站脚本)的警钟在这里敲响了...!)

使用@Html.Raw 在特定 View 页面上显示相同的输入(...铃声现在响得更响了)

并且,为了能够完成这项工作,Controller 上的 [ValidateInput(false)] 装饰器和 Model 字段上的 [AllowHtml] 来填充图片...... (我能说些什么铃声!!!)

现在,在有人将某些程序员定罪之前 :-) 让我明确表示,特定管理员角色的用户可以使用这种危险的输入功能。所以这是一种受控情况。

不过,最近我们决定对这种情况添加一些控制,因为此功能会从内部产生风险,以防管理员用户自己的恶意行为。

最容易实现的选项是禁用整个功能并添加一些 Markdown 编辑器,它将存储无害的 Rich-Text-Format 输入,但我仍然必须转换所有 现有数据添加到此 Markdown,以便它们正确显示。

不过,我需要的是能够通过添加某种脚本标签过滤器和其他危险标签来降低内部风险 - 而不是消除 ,作为现有 Html.Raw 助手的扩展。

有人可以建议一种扩展或包装现有 HtmlHelper 的方法吗?

这是元数据信息:

// Summary:
// Returns markup that is not HTML encoded.
//
// Parameters:
// value:
// The HTML markup.
//
// Returns:
// The HTML markup without encoding.
public IHtmlString Raw(string value);

最佳答案

使用 Microsoft AntiXSS 库可以避免跨站脚本攻击。安装 AntiXSS 4.3.0。来自 nuget Install-Package AntiXSS

@Html.Raw(Microsoft.Security.Application.Sanitizer.GetSafeHtmlFragment(value))

如果这不起作用,请尝试使用 AjaxControlToolkit 的 HtmlAgilityPackSanitizerProvider。使用它,您可以将一些标签和属性列入白名单。

你可以查看这个SO link

关于c# - 如何扩展 Html.Raw 以便在显示之前清理危险的 HTML 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35768910/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com