【发布时间】:2016-03-03 10:02:12
【问题描述】:
我继承了一个 web 应用程序,它已经有一些输入字段接受来自用户的纯 Html。 (你可能明白 XSS(跨站脚本)的钟声在这里响起......!)
使用@Html.Raw 在特定视图页面上显示相同的输入(...现在铃声响亮了)
而且,为了能够完成这项工作,Controller 上的 [ValidateInput(false)] 装饰器和 Model 字段上的 [AllowHtml] 来填充图片...... (我能说什么钟声!!!)
现在,在有人将某些程序员定罪之前 :-) 让我明确一点,这种危险的输入功能是允许特定管理员角色的用户使用的。所以这是一种可控的情况。
不过,最近我们决定添加一些控制来解决这种情况,因为此功能会从内部产生风险,以防管理员用户本人的恶意行为。
易于实施的选项是禁用整个功能并添加一些 Markdown 编辑器,它将存储无害的富文本格式输入,但我仍然必须转换所有 现有数据到此 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);
【问题讨论】:
标签: c# asp.net-mvc xss html-helper razorengine