当然,这还不够……您需要对嵌入页面中的任何 HTML 进行 HTML 编码,以供最终用户编辑。否则,您需要对其进行消毒。
您可以在Owasp 网站上找到更多信息
编辑:针对您的评论,我不是 100% 确定。如果您不小心,听起来在某些情况下双重编码会让您受益。
https://www.owasp.org/index.php/Double_Encoding
例如,该页面中的这个字符串应该演示一个隐藏“<”字符的漏洞:
%253Cscript%253Ealert('XSS')%253C%252Fscript%253E
此外,字符“<”可以在 HTML 中以多种不同方式编码,如下表所示:
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet#Character_escape_sequences
所以对我来说,这是要小心的事情——事实上可能存在难以理解的可利用案例,但可能会让你敞开心扉。
但回到你原来的问题 - 你能给我一个呈现为不包含“<”字符的 HTML 的 HTML 示例吗?我试图了解您希望用户能够在“id”中使用的 HTML。
此外,如果您的网站很小,如果您愿意重写部分内容(特别是如何在页面中使用 javascript),那么您可以考虑使用内容安全策略来保护您的用户免受 XSS 攻击。这适用于大多数现代浏览器,如果您采取此步骤,它将保护您的许多用户免受 XSS 攻击。