2010-01-20 55 views
2

我确定这是一个常见问题...ASP.NET控件中的安全HTML

我希望用户能够输入和格式化描述。

现在我有一个多行文本框,他们可以输入纯文本。这将是很好,如果他们可以做一个小格式的HTML。这是我必须处理的事情吗?解析输入并只验证是否存在诸如<ul><li><b>等“安全”标签?

我将此说明保存在SQL数据库中。为了正确显示这个HTML,我需要在页面上使用一个文字,然后将它转储到适当的区域,或者对于我正在做的事情有更好的控制吗?

此外,是否有像SO上的用户输入/小编辑的自由控制?

回答

4

查看AntiXSS库。当前版本(3.1)有一个名为GetSafeHtmlFragment的方法,可用于执行您正在讨论的解析类型。

Literal可能是输出此HTML的正确控制方式,因为Literal只是输出所放入的内容并让浏览器呈现任何HTML。标签将输出包括标签的所有标记。

AJAX控制工具包有text editor

2

您需要检查正在输入的内容标签,以避免交叉侧脚本攻击等。您可以使用正则表达式来检查任何标签在你的“白名单”上,并且删除任何其他人。

您可以查看此link获取富文本编辑器列表。

0

除了其他答案,您还需要在包含文本框的页面的@Page指令中设置ValidateRequest =“false”。这会关闭标准ASP.NET验证,以防止HTML从文本框中发布。然后你应该使用你自己的验证程序,比如@PhilPursglove提到的一个。