不是很全
目前我们所总结的不安全的 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>