做富文本过滤面临的一些问题
来源:互联网 发布:mysql字符串转换成日期 编辑:程序博客网 时间:2024/05/22 01:35
关于富文本过滤,就是说给一段混杂了html,js,css的文本,过滤出安全的部分,因此要做html,css解析,黑白名单设计,内容过滤。概括下来,功能点如下:
- 以白名单方式过滤html属性,标签,不在白名单内的属性和标签被过滤。
- 每个属性按照规定的格式过滤,不符合格式的清除
- 解析style属性和标签内的css表达式,过滤expression()等不安全的代码,过滤url()内的外部url引用
实际上牵涉到的主要技术有词法分析、语法分析、内容过滤。
css解析器完全是用bison + flex自己写的,参考了w3c规范提供的lalr(1)文法和词法,但是这个写的比较理想化,比实际
的要简单的多。真正在开发的时候做了很多异常处理,列举了css解析的一些难题:
1. 一些不规范的css需要解析(是指每个浏览器单独提供的一些格式,例如
*color:red
_color:red
filter:alpha(opacity=4)
color:expression(/*js code*/))
media hand screen (width=400,...) {
....
}
2. 各类编码的处理,例如css中可允许部分字符采用/067/的形式或者/g的形式表示g,还有一些地方会有unicode等
3. 一些不规范的css需要跳过,不能解析出错,比方{display:;},或者{color:display:none}
4.在解析的同时需要获取数据,比如url函数内的路径
5.需要找到expression的结尾,单纯找)肯定是不合适的,因为)可能在js的函数里,对象里,字符串里
目前我采用了bison+flex,词法分析结合语法分析,上下文无关文法lalr(1) ,使用这种方式来解析和过滤,目前开发已经快完了
不仅如此,flex作词法分析有3中状态,使用2个词法分析器,一种取<style>标签的结尾,另一种分析style内的词语
- 做富文本过滤面临的一些问题
- 富文本的一些属性
- 微信小程序采坑(1):富文本的一些问题
- 过滤富文本编辑器
- 富文本编辑器中的一些问题
- 富文本编辑器html过滤
- 富文本编辑器上传图片的问题
- 关于富文本Tinymce的问题
- 小程序富文本编辑器的问题
- 推荐系统与协作过滤面临的主要问题
- 推荐系统和协同过滤面临的主要问题
- 富文本乱码问题
- 前段时间做过一个基于bootstrap的富文本编辑器
- 2.0版本的富文本RICHEDIT20A的一些总结
- 2.0版本的富文本RICHEDIT20A的一些总结
- Lable的富文本
- Lable的富文本
- 富文本的使用
- UML建构前 杂记
- SRM 458 Div 2
- JAVA反射机制
- 如何对Visibility属性进行动画(XMAL /CS)
- Mxml文件打开出错 Adobe flex eclipse plugin 错误信息:Could not open the editor: Assertion failed
- 做富文本过滤面临的一些问题
- ICMP与ping,tracert
- SCS云计算平台到底是做什么的?
- 记在google.cn即将倒闭之后
- What is "World Wide Web"
- mysql中文乱码解决
- C/C++头文件一览
- 责任心
- Ant教程