数据库中的HTML标签是不良做法还是良好做法?

Any*_*are 5 html css c# database asp.net

有时我需要格式化来自数据库的特定数据或部分数据.

例如 :

如果我有这样的desc(存储在DB中):


HTML 4经过调整,扩展和扩展,超出了其初始范围,为网站带来了高水平的交互性和多媒体.像Flash,Silverlight和Java这样的插件已经为Web添加了媒体集成,但不是没有一些成本.


我想格式化最后一行,例如更改字体和颜色.

这样做的最佳做法是什么?

HTML在我的数据库中嵌入标签?这是安全的,最好的做法还是有一些方法可以将结构层与表示层从行为层分开?

Sal*_*n A 6

如果您计划操作或搜索存储的数据,则不要在数据库中存储HTML标记.想象一下,在某些时候,您被要求将字体从Tahoma更改为Georgia,将<b>标签更改为<strong>或允许用户在HTML列上进行搜索; 并且搜索强大的最终返回无关信息,因为strong也是经常使用的HTML标记.

如果不检查存储的内容,在数据库中存储HTML标记也是一个坏主意.恶意脚本标签<script>location = 'http://otherwebsite'</script>就像一个简单的例子.

理想情况下,您应该按原样存储数据或使用某种标记(例如(wiki或markdown))来存储基本格式信息.


gfo*_*une 5

有一些方法可以将数据与演示文稿分开.你把它们分开!如果要对从数据库中提取的文本进行一些格式化,请继续在应用程序代码中执行此操作.请注意,结构化标记与表示标记(字体,颜色,布局等)完全不同.

http://en.wikipedia.org/wiki/Separation_of_presentation_and_content讨论了这一点,并在意图含义下的段落中明确区分了表示标记和结构标记.

在数据中存储格式化标签通常表示两个层之间的分离较差或数据模型不足以正确表示您的数据.由于作者将数据存储在数据库中,这可能表明他只有一个字段用于保存文章的"内容块"而不是作者,标题,正文,引用等的多个字段.对于用户输入数据,我们经常回到用户内容中的标记来指定结构.出现这种情况,通过"假"的HTML标签,甚至真正的HTML/XML标签,如<h1>,<em>,<a>,等.

请注意,我原则上并不反对结构标记,但如果您将其存储在数据库中,我会仔细查看为什么需要它.我原则上反对演示标记.