2013-01-13 38 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轉義一切。您的視頻的網址不會受到您想要執行的任何轉義操作的影響。