Html 什么标记语言用于格式丰富的内容?
在开发基于web的应用程序时,如果希望允许用户输入格式丰富的文本,则必须选择如何允许该输入。创建了许多不同的标记语言,因为清理HTML可能更加困难 各种不同标记语言的优缺点是什么,如:Html 什么标记语言用于格式丰富的内容?,html,formatting,markdown,markup,bbcode,Html,Formatting,Markdown,Markup,Bbcode,在开发基于web的应用程序时,如果希望允许用户输入格式丰富的文本,则必须选择如何允许该输入。创建了许多不同的标记语言,因为清理HTML可能更加困难 各种不同标记语言的优缺点是什么,如: 或者换句话说,在选择使用特定的标记语言时,你会考虑哪些因素。 MaskDead,BBCode,Buffic,MyaWiKi标记都是基本相同的一般概念,所以我真的只是把它分为两类:HTML和纯文本标记。 HTML 处理HTML的方法是,内容已经是web内容的“可呈现”形式。这很好,节省了处理时间,而
或者换句话说,在选择使用特定的标记语言时,你会考虑哪些因素。
MaskDead,BBCode,Buffic,MyaWiKi标记都是基本相同的一般概念,所以我真的只是把它分为两类:HTML和纯文本标记。 HTML 处理HTML的方法是,内容已经是web内容的“可呈现”形式。这很好,节省了处理时间,而且是一种易于解析的语言。几乎任何一种语言都有几十个库来处理HTML内容,将HTML转换为其他格式,等等。主要的缺点是,由于早期web时代的松散标准,HTML可能会有令人难以置信的变化,在接受用户的HTML时,您不能总是依赖合理的输入。如前所述,整理或整理HTML通常非常困难,特别是因为它无法像XML那样遵循正常的标记规则(即,不正确关闭的标记很常见)
纯文本标记 经常使用此类别的原因如下:- 易于从一个源解析为多个表单-PDF、HTML、RTF
- 如果以后需要,内容存储在可读的纯文本中(通常比原始HTML容易阅读),而不需要从HTML中提取
- 遵循特定的定义规则,其中HTML可能是变量和非结构化的
- 允许您强制使用在许多情况下比简单地允许完整HTML更合适的内容格式子集
- 除了强制HTML的一个子集外,还可以轻松清理输入并防止跨站点脚本问题等
- 以抽象格式保存“原始”数据意味着在以后的某个日期,如果您想将站点从HTML4转换为XHTML,您只需要更改解析代码。对于HTML格式的用户输入,您现在不得不将所有HTML单独转换为XHTML,正如HTML Tidy所示,这并不总是一项简单的任务。类似地,如果在某个时候出现了一种新的标记语言,或者您需要转移到另一种格式(RTF、PDF、TeX),则文本格式选项的抽象受限子集会使这项任务变得简单得多
真的吗?这有多困难?有一些函数可以删除潜在危险的属性或标记,并在将HTML输入数据库或文件之前对其进行验证。你能给我举个例子说明清理HTML是多么困难吗 @netrox数据库不是问题,浏览器输出是问题 唯一需要关注的是最终呈现,用户插入的HTML可能会破坏最终呈现。例如,用户可以打开一个
标记,但从不关闭它,这取决于页面的结构,可能会破坏随后的整个布局。或者另一个例子是打开一个
标记而不关闭它,使所有剩余的内容变为粗体
因此,不仅必须验证允许的标记,而且如何确切地允许某些标记而不允许其他标记?例如,因为使用PHP方法很容易阻止解析所有HTML标记,但是当涉及到允许某些标记时,您必须寻找其他方法。有一个PHP函数可以删除(完全删除)不允许的标记,但这意味着以一种不好的方式更改用户的内容,阻止用户发布简单的代码,例如(要共享/显示的代码,而不是要处理的代码)
除了破坏布局外,还必须考虑XSS攻击,比如将JavaScript插入到链接的HREF属性中,例如,可以将用户重定向到另一个站点。请参阅以下可能的XSS攻击的详细列表:
正如您所看到的,阻止所有HTML标记被解释是非常容易的,但是只阻止部分标记要复杂得多。要了解这一点,您可以看看庞大的“”框架,它的唯一目的是允许一些HTML标记,并确保输出的HTML有效(即不会破坏页面)并且没有XSS攻击。这()也是您所指的文章吗?是的,几周后,他做了一次跟进。猴子:请在你的答案中添加以下链接:)