2015-01-08 39 views
0

我可以讓用戶在郵件提要中發佈一些文本。他們能夠輸入任何他們想要的。停止發佈HTML,除非需要

後端服務器檢測到存在鏈接和其他可鏈接元素(如標記其他人),然後將這些鏈接保存到數據庫中。

當用戶提供了信息的完整列表,它們會顯示的用戶已張貼的東西,任何東西本來是一個鏈接變成一個鏈接

例如有人鍵入www.foobar .com所以帖子將顯示<a href='www.foobar.com'>www.footbar.com</a>

這很好,但如果有人在自己鍵入HTML會怎麼樣。首先它會混淆格式,其次它允許用戶發佈他們自己的HTML,這可能是顯而易見的危險。

我需要一種方法,不將從API返回的文本轉換爲HTML,除非它是我打算使用的HTML。然而,我不想阻止某人試圖發佈HTML,只是停止它變成HTML

Twitter做它正確。如果我發佈到twitter

<a href='www.foobar.com'>www.footbar.com</a> 

它會告訴我你到底看到了什麼,但www.foobar.com將突出顯示並可點擊。

雖然它可能不相關的,我使用了前端

UPDATE

我使用下面的代碼來顯示文本的ASP.NET Web API後端和Knockout.JS(淘汰賽JS觀察對象)

<div data-bind="foreach: allMessages"> 
    <span data-bind="html: theText"></span> 
+0

我會從另一端處理問題。阻止來自用戶的任何「HTML」輸入。否則,你將面臨一個容易出現各種錯誤的大問題。 – melancia

+1

當你輸出到用戶界面時,你可以對文本進行HTML編碼嗎? – David

+0

http://stackoverflow.com/questions/23403468/how-to-display-input-type-text-without-creating-a-textbox-in-jquery/23403574#23403574可能會幫助你 –

回答

1

您的後端代碼應該對進入的數據進行編碼,這會將html標記更改爲基於文本的文本。 示例爲<div>test</div>更改爲%3Cdiv%3Etest%3C/div%3E。這會阻止數據進入你不想要的數據庫。

+0

這就是我所追求的。我對HTML理解的缺乏並沒有幫助,但你的榜樣讓我朝着正確的方向前進 – MichaelMcCabe