我有一个编辑器,允许用户添加存储在数据库中并在网页上呈现的HTML。由于这是不受信任的输入,我计划使用Microsoft.Security.Application.AntiXsSS.GetSafeHtmlFragment
来清理HTML。
答案 0 :(得分:32)
我出于两个原因不同意所选答案
通常,您在输出点进行编码,并将来自数据存储的任何数据视为默认情况下不受信任 - 毕竟,如果有人设法直接编辑数据库或通过SQL注入,该怎么办?
答案 1 :(得分:11)
听一听OWASP podcast 67 with Jeff Williams on XSS。他谈到在存储之前不进行消毒或编码。主要原因是,如果(当)库发展以响应新的漏洞,您的数据将被卡在旧版本中。当然,这并不能阻止您在入口点针对白名单运行任何输入并拒绝任何超出可接受范围的内容。
答案 2 :(得分:3)
AntiXss.GetSafeHtmlFragment()
)答案 3 :(得分:-1)
您可以在页面指令中使用参数 ValidateRequest =“true”。通过这种方式验证所有请求数据,如果存在验证问题,您始终可以捕获错误。它还可以防止sql注入线程和其他不仅可能的XSS。
使用数字数据,您可以使用Int32.TryParse()或任何其他TryParse系列(Byte.TryParse Int16.TryParse ...)验证整数溢出或滥用数据类型
无需使用任何其他类别或额外的消毒剂方法。