转:过滤 FCKeditor 不安全 HTML

目前我们所总结的不安全的 HTML 代码包括:
1.脚本:<script *>*</script>
2.事件 : <element on* >
3.样式 :<style *></style> <link * />
4.框架 : <iframe *></iframe>
5.表单 : <form *></form> <input */> <select */> <texterea * />
6.其他html标记:<html> <body> ,如果输入HTML标记造成页面的DOM结构不完整,会破坏原有页面的显示及script 的运行。
7.样式:url,expression等,目前很多网站都未针对此类隐患进行过滤
例如:可执行script 的样式定义 <DIV STYLE="background-image: url(javascript:alert(1))"></div>
8.Flash 标签,比如 加载一个flash 就立刻跳转到黄色网页。
其中 3,7, 8  是很容易忽略的,包括新浪博客。CSS注入可以修改整个博客版面,打开页面后执行代码。

前端 FCKeditor 在配置文件 fckconfig.js 里已可以设置过滤:

FCKConfig.ProtectedSource.Add( /<\s*iframe[\s\S]*?>/gi ) ;        // <iframe> tags.
FCKConfig.ProtectedSource.Add( /<\s*frameset[\s\S]*?>/gi ) ;        // <frameset> tags.
FCKConfig.ProtectedSource.Add( /<\s*frame[\s\S]*?>/gi ) ;        // <frame> tags.
FCKConfig.ProtectedSource.Add( /<\s*script[\s\S]*?\/script\s*>/gi ) ;        // <SCRIPT> tags.
FCKConfig.ProtectedSource.Add( /<%[\s\S]*?%>/g ) ;        // ASP style server side code
FCKConfig.ProtectedSource.Add( /<\?[\s\S]*?\?>/g ) ;        // PHP style server side code
FCKConfig.ProtectedSource.Add( /(<asp:[^\>]+>[\s|\S]*?<\/asp:[^\>]+>)|(<asp:[^\>]+\/>)/gi ) ;        // ASP.Net style tags <asp:control>

发表评论
回复 引用 举报
1楼 2009年5月14日 21:37:03 | 天啊
我的天啊,刚好搞反了啊,FCKConfig.ProtectedSource.Add是增加受保护的代码,用于将原本默认会过滤掉了标签设置为不过滤。
我的FCK就是用你的这种方法启用不过滤的,今天在这看到是过滤,大惊,于是测试了好多遍,你这些不是设置过滤而是设置不过滤这些代码(当然前面的几个本来默认就是不过滤的,后面三个本来是过滤的,像这这样一设,就不过滤了,别人可以直接插入asp,php,asp。net代码了!)
汗!!!!!!!!!!!!!!!!!!
回复 引用 举报
2楼 2009年7月25日 15:20:21 |
同意2楼
我用得是2.6版本德 今天也弄了 发现前面三个已经有了 不过是加了注释(\\)的 输入<% ...%> 会屏蔽掉 去掉注释(\\)就不
回复 引用 举报
3楼 2009年7月25日 15:21:10 |
(接上)会屏蔽
回复 引用 举报
4楼 2009年11月4日 16:27:33 |
是大是大非
回复 引用 举报
5楼 2010年3月8日 17:37:27 | 鄢来振
为什么我的注释和不注释都有错?
回复 引用 举报
6楼 2010年3月8日 17:37:56 | 鄢来振
为什么我的注释和不注释都不行呢?
姓名:
主页:
QQ/Email:  (只有博主才能看到)
验证码:  
内容:
(请不要发表任何与政治相关的内容)