0
4

2 回答 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 回答