2015-05-09 87 views
2

在Firebase(AngularFire)中存儲HTML是一個好主意嗎?在Firebase(AngularFire)中存儲HTML,好主意還是壞主意?

我有一個網站,我正在創建一個用戶可以製作HTML元素的管理網站。我希望人們保存這些元素以及元素內的順序和內容。所以我認爲將整個HTML存儲爲字符串並在返回時加載它會容易得多。餿主意?

這裏是我(簡化):

$scope.save = function() { 
    var refState = new Firebase("https://<name>.firebaseio.com/users/" + currentAuth.uid + "/state"); 
    var html = "<div>hello</div>"; 
    refState.set({ 
     "state": html 
    }, function(error) { 
     if (error) { 
      console.log("not been saved") 
     } 
    }) 
} 

而在我的HTML我檢索要像角感謝評論此採用了棱角分明,(是的,我現在知道如何渲染HTML顯示它:)

<div class="well col-md-12"> 
{{sync[3].state}} 
</div> 
+0

可能的重複[如何呈現與角模板的HTML](http://stackoverflow.com/questions/15754515/how-to-render-html-with-angular-templates) –

+0

我覺得這可能是一個[XY問題]的案例(http://mywiki.wooledge.org/XyProblem)。也許試着通過在Firebase中存儲HTML來告訴我們實際上想要實現的目標? – Marein

+0

@FrankvanPuffelen是的我知道了,謝謝。但是,將HTML存儲在Firebase中的安全性很差嗎? – Michelangelo

回答

5

在firebase中存儲字符串化的HTML並不比存儲在不同的數據存儲中更糟糕。你會想要考慮XSS問題,包括如果他們在他們的HTML中定義<style>body{display:none}</style>

您是否正在創建一個真正的完整的內容創建系統?如果是這樣,有時很難擺脫用戶定義的HTML,通常來自CKeditor,tinymce等。但是,如果他們正在構建的項目都是相似的,則應該考慮如何以更好的數據存儲/恢復它們格式。大多數情況下,有更好的方式來保存和恢復存儲直線HTML的用戶定義內容。

+0

Thnx。這是我正在尋找的答案。我會考慮做與衆不同的。這似乎還有很多工作。項目差異很大...... – Michelangelo

+0

編寫一個完整的內容創建系統是最困難的Web開發任務之一。單單處理富文本是一場噩夢。作爲一個方面說明,將用戶生成的內容粘貼在一個'iframe'中是使用它們的少數幾個好時機之一,它會在沙盒方面爲您帶來很多好處。一旦Web組件完全實現,它們也將成爲這個的一個很好的解決方案。 –

1

我建議檢出Firepad

  • Firepad是Firebase應用程序的嵌入式「開源協作代碼和文本編輯」體驗。
  • 「Firepad可以使用CodeMirror編輯器或Ace編輯器來呈現文檔。」
  • 輕鬆實現在Firebase實例中無縫存儲/同步內容的豐富文本編輯體驗。

隨着documentation介紹,這是你如何初始化Firepad:

<div id="firepad"></div> 
<script> 
    var firepadRef = new Firebase('<FIREBASE URL>'); 
    var codeMirror = CodeMirror(document.getElementById('firepad'), { lineWrapping: true }); 
    var firepad = Firepad.fromCodeMirror(firepadRef, codeMirror, 
     { richTextShortcuts: true, richTextToolbar: true, defaultText: 'Hello, World!' }); 
</script> 

這是完全正常的存儲HTML在火力地堡。

Koding.com,Nitrous.io和更多使用Firepad的協作代碼編輯器產品。

+0

嘿,這是很漂亮的東西。但這真的很安全嗎?看到其他答案,他們不推薦它。 Firepad如何確保安全? – Michelangelo

+0

你好Mikey。這是一個很好的問題,我不知道答案。我想,在迪倫的答案中提出的同樣的問題將適用。也許Firebase團隊的成員可以在Firepad - @FrankvanPuffelen?的背景下加入。我個人從來沒有遇到任何問題,我只是想從易用性的角度來展示Firepad。 –

+2

由於Firebase使用CodeMirror或AceEditor來顯示HTML,因此答案是Firebase確實無法保證這一點,但UX工具在很大程度上利用了XSS安全性。 – Kato

相關問題