2017-07-14 26 views
2

我想創建一個文本編輯器,但是當我完成編輯文本時,文章如何存儲在數據庫中存在問題。難道我把它存儲與HTML代碼或HTML標記轉換爲特殊符號,如:<br>標籤[br]<span>text</span>[span]text[/span]從文本編輯器中將文章存儲在數據庫中的最佳方式

感謝很多:)

+3

簡單替代不會有任何區別。它所要做的就是添加一個在顯示之前轉換字符的步驟。如果允許用戶生成的HTML存儲,檢索並顯示在您的網站上,我會更關心允許XSS。 –

+0

每篇文章都是動態的,並且有不同的內容,所以將它保存爲HTML標籤,並出於安全目的使用注入。 –

+0

爲什麼不使用markdown,並存儲原始降價來源,然後將其呈現爲HTML即時?將解決存儲和XSS的基本上每一個問題。 –

回答

0

在數據庫中,你必須只存儲的特殊字符,如HTML和其他逃脫的值。

使用mysqli_real_escape_string

有許多方法可以使用:urlencode/urldecodehtmlspecialchars等。

0

除非不希望呈現HTML,否則沒有理由替換這些符號。如果是這樣,那麼你也可以使用HTML Entities。這些不會被瀏覽器呈現爲HTML,然後將文本保存到數據庫中。

如果你希望在它被加載的地方,那麼你不必與HTML Entities更換符號要呈現的HTML。

但一定要消毒是可能的scripting attacks輸入存儲在他們面前,如果你允許用戶輸入內容的任何文本。

0

這真的取決於你想用它做什麼。至少,你要確保你遵守「永遠不要相信任何人....永遠......」

確保什麼都你在做你sanatising您的數據插入到你的數據庫之前。

有許多圖書館在那裏,讓你從HTML(標記)轉換爲標記下來。

https://github.com/netgusto/upndown < - JavaScript的

https://github.com/Elephant418/Markdownify < - PHP

IMO它真的並不重要,你保存它什麼格式,只要它是一個標準格式。 HTML,Markdown等已經過多年的嘗試和測試,非常精彩......爲什麼要重新發明輪子。

https://en.wikipedia.org/wiki/List_of_document_markup_languages

在某些方面,將其保存爲什麼都你的編輯器創建大概就像是試圖將其轉換爲別的,你只需要簡單地重新轉換它回來的路上,東西容易;-)

只要記住你將它添加到你的數據庫,或者你會打開自己到可以放棄你的數據庫的惡意攻擊,破壞你的數據,甚至進一步惡化之前來淨化你的東西。

相關問題