问问题
137 次
2 回答
1
不幸的是,没有办法强制浏览器为您解释不平衡的标签。采取这种情况:
<b>foo <i>bar</b> baz</i>
它是否应该将标签留在原处并将其呈现为
富吧巴兹
,或者浏览器应该假设<i>
标签是子标签并移动它的结束标签?或者也许用户的意思<b>
是孩子并移动它的结束标签?
如果您要允许用户标记并且想要避免呈现问题,那么您可以计算打开/关闭标签的总数以确保它们平衡(如果没有,则删除所有标签),或者使用像上面Horen的回答那样更加防弹的服务。
此外,允许用户提交 HTML 可能是非常不明智的。即使您将某些标签列入黑名单,也可能存在大量其他漏洞。最好让用户输入受限的 Markdown 或 BBcode,然后将您允许的字符转换为HTML。
于 2013-11-09T18:56:34.540 回答
0
你可以使用像php tidy这样的 html sanitizer 来清理和修复你的源代码。
另一个选项 AFAIK 将是HTML Purifier
于 2013-11-09T18:40:23.710 回答