例如,StackExchange将HTML的子集列入白名单:
https://meta.stackexchange.com/questions/1777/what-html-tags-are-allowed-on-stack-exchange-sites

您如何在 Controller 中执行此操作以确保用户输入安全?

最佳答案

这种方法与StackExchange不同,但是我发现AntiXSS 4.x库是一种清除输入内容以允许“安全” HTML的简单方法。

http://www.microsoft.com/en-us/download/details.aspx?id=28589您可以在此处下载一个版本,但是我将其链接为有用的DOCX文件。我的首选方法是使用NuGet程序包管理器来获取最新的AntiXSS程序包。

您可以使用在4.x AntiXss库中找到的HtmlSanitizationLibrary程序集。请注意,GetSafeHtml()在Microsoft.Security.Application.Sanitizer下的HtmlSanitizationLibrary中。

content = Sanitizer.GetSafeHtml(userInput);

这可以在保存到数据库之前完成。这样做的好处是可以立即删除恶意内容,而在输出恶意内容时不必担心。缺点是它将无法处理任何现有的数据库内容,因此您必须在进行数据库更新时随时应用。

另一种方法是每次输出内容时都使用此方法。

我很想听听首选的方法是什么。

10-06 01:07