2015-05-09 84 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

相关问题