gpt4 book ai didi

c# - AntiXSS 不会清理未关闭的 html 标签

转载 作者:太空宇宙 更新时间:2023-11-03 10:34:40 26 4
gpt4 key购买 nike

为什么未使用 Microsoft AntiXSS 清理未关闭的 html 标记?

string untrustedHtml = "<img src=x onmouseover=confirm(foo) y=";
string trustedHtml = AntiXSS.Sanitizer.GetSafeHtmlFragment(untrustedHtml); // returns "<img src=x onmouseover=confirm(foo) y="

关闭标签已清理:

string untrustedHtml = "<img src=x onmouseover=confirm(foo) y=a>";
string trustedHtml = AntiXSS.Sanitizer.GetSafeHtmlFragment(untrustedHtml); // returns ""

最佳答案

建议尽可能使用 HTML 编码而不是 HTML 清理。仅当您确实需要使用一些 HTML 但想删除任何不安全的代码时才应使用清理。在 99% 的情况下,您不需要用户插入任何 HTML,应该通过编码来消除这种情况。

话虽如此,如果您仍想执行清理,AntiXSS 并不是最好的解决方案 - 因为上面的示例,以及它还会删除完全安全的 HTML 并错误地将其识别为不安全的事实,从而导致 AntiXSS 清理程序无效。Ajax 控制工具包有一个更好的内部清理器,您可以使用它,但请注意它的安全性较低,因为它们部分使用黑名单(搜索危险代码而不是只允许安全代码)。

如果您仍想使用 AntiXSS 清理,您可以在发送到清理器之前检查插入的 HTML 是否有效。例如,您可以使用某种 XML 文档类来做到这一点,因为任何有效的 HTML 也是有效的 XML。

希望这对您有所帮助。

关于c# - AntiXSS 不会清理未关闭的 html 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28276142/

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