2013-01-13 36 views
3

我正在管理一个部分人可以提交自己的文章和条目的博客。我希望他们能够通过HTML嵌入视频(以及选择粗体,斜体等文字)。如何在维护网站安全的同时做到这一点?HTML转义只有一些字符和字符的组合?

如果我没有HTML转义的实际文章空间,一个公开的评论会毁了我的网站。有没有办法有选择地逃避某些字符组合?

编辑;希望没有写我自己的解析器。我只是想简单的东西,如<b>,<i>等标签非转义,以及视频和链接嵌入。

+0

你不会说你正在使用什么语言,但有可能你不必编写自己的解析器。 HTML解析是一个解决的问题,软件包比比皆是,为你做到这一点。 –

+0

我将问题标记为PHP和HTML。 – gator

+0

然后从这里开始:http://stackoverflow.com/questions/292926/robust-mature-html-parser-for-php –

回答

3

我使用什么SO使用。它是开源的,并且有许多语言的解析器。

名称是WMD和问题"Where's the WMD editor open source project?"有一些QA材料概述此编辑器。

问题"running showdown.js serverside to conver Markdown to HTML (in PHP)"有一些QA材料概述了PHP中的一些Markdown库。

+1

小心:要以安全的方式运行此操作,您需要在服务器端执行javascript代码,例如通过node.js *或*你必须在PHP中有一些compatbile,比如一个类似于该扩展的javascript代码的降价库。将第二部分添加到答案中也许会有用。 – hakre

+0

@hakre - 降价是很常见的,所有的语言都有解析器。很容易找到一个。我将在答案中添加到PHP的链接 –

0

要做到这一点,大多数网站(如SO)使用的最简单的方法是引入您自己的特殊标记,然后将其转换为您想要的功能。

例如,SO使用星号(*)以斜体和(**)大胆(编辑:旁边的HTML标签<b></b>本身,看这个答案的来源)。

其他网站使用[b][i]标签。您可以使用[video=http://myvideo.com]标签,然后您的PHP将其转换为适当的HTML实体。

+1

SO没有特殊的标记,它*允许* HTML标记(按照Markdown规范btw。)所以你没有回答任何提出的问题,相反,我建议学习更多,继续在这里:http://www.codinghorror.com/blog/2008/10/programming-is-hard-lets-go-shopping.html – hakre

+1

它绝对有特殊的标记。 HTML支持的事实并不否定这一点。 –

+0

嗯,它并没有否定这一点,但它使你的答案不是一个。您通过指向特殊标记来移除问题,显然在给定示例中允许作者*关注该问题的HTML标记。 – hakre

0

您可以安全地HTML转义一切。您的视频的网址不会受到您想要执行的任何转义操作的影响。