我正在管理一个博客,其中少数人可以提交自己的文章和条目。我希望他们能够通过 HTML 嵌入视频(以及他们选择的粗体、斜体等文本)。如何在维护站点安全的同时做到这一点?
如果我不对实际的文章空间进行 HTML 转义,那么公开的评论就会毁掉我的网站。有没有办法选择性地转义某些字符组合?
编辑; 希望不用编写我自己的解析器。我只想要简单的东西,比如<b>
,<i>
等标签未转义,以及视频和链接嵌入。
我使用 SO 使用的东西。它是开源的,并具有多种语言的解析器。
名字是WMD和问题“WMD 编辑器开源项目在哪里?” 有一些质量保证材料概述了这个编辑器。
问题“running showdown.js serverside to conver Markdown to HTML (in PHP)”有一些 QA 材料概述了 PHP 中的一些 Markdown 库。
大多数网站(例如 SO)使用的最简单的方法是引入您自己的特殊标记,然后将其转换为您想要的功能。
例如,SO 使用星号 ( *
) 斜体和 ( **
) 粗体(编辑:在 HTML 标记本身旁边<b></b>
,请参阅此答案的来源)。
其他网站使用[b]
和[i]
标记。您可以有一个[video=http://myvideo.com]
标签,然后您的 PHP 会将其转换为适当的 HTML 实体。
您可以安全地 HTML 转义所有内容。您的视频的 URL 不会受到您想要进行的任何转义的影响。