过滤html在线编辑器产生有危害代码

原创 2006年06月07日 23:06:00

部分强大的在线编辑器,已经包含了代码整理,过滤功能,但js处理的能被很轻易的饶过,服务端必须要再次过滤一次,这几天花了点时间,写了部分,希望对大家有点用处,本人能力有限,还请有能力的朋友补全它。

 

/*不需要过滤的数组*/
$htm_on=array(
"<acronym","acronym>",
"<baseFont","baseFont>",
"<button","button>",
"<caption","caption>",
"<clientInformation","clientInformation>",
"<font","font>",
"<implementation","implementation>",
"<button","button>",
"<location","location>",
"<option","option>",
"<selection","selection>",
"<strong","strong>",
"font");

$htm_on_uper=array(
"<ACRONYM","ACRONYM>",
"<BASEFONT","BASEFONT>",
"<BUTTON","BUTTON>",
"<CAPTION","CAPTION>",
"<CLIENTINFORMATION","CLIENTINFORMATION>",
"<FONT","FONT>",
"<IMPLEMENTATION","IMPLEMENTATION>",
"<BUTTON","BUTTON>",
"<LOCATION","LOCATION>",
"<OPTION","OPTION>",
"<SELECTION","SELECTION>",
"<STRONG","STRONG>",
"FONT");

/*字符格式*/
$str=strtolower($str);
$str=preg_replace("//s+/", " ", $str);//过滤回车
$str=preg_replace("/ +/", " ", $str);//过滤多个空格

/*过滤/替换几种形式的js*/
$str=preg_replace("/<(script.*?)>(.*?)<(//script.*?)>/si","",$str);//删除<script>。。。</script>格式,
//$str=preg_replace("/<(script.*?)>(.*?)<(//script.*?)>/si","&lt;//1&gt;//2&lt;//3&gt;",$str);//替换为可以显示的,

$str=preg_replace("/<(script.*?)>/si","",$str);//删除<script>未封闭
//$str=preg_replace("/<(script.*?)>/si","&lt;//1&gt;",$str);//替换未封闭

/*删除/替换表单*/
$str=preg_replace("/<(//?form.*?)>/si","",$str);//删除表单
//$str=preg_replace("/<(//?form.*?)>/si","&lt;//1&gt;",$str);//替换表单

$str=preg_replace("/<(i?frame.*?)>(.*?)<(//i?frame.*?)>/si","",$str);//删除框架
//$str=preg_replace("/<(i?frame.*?)>(.*?)<(//i?frame.*?)>/si","&lt;//1&gt;//2&lt;//3&gt;",$str);//替换框架

/*过滤on事件*/
$str=preg_replace("/href=(.+?)([/"|/'| |>])/ie","'href='.strtoupper('//1').'//2'",$str);//把href=涉及到的on转换为大写。
$str=str_replace($htm_on,$htm_on_uper,$str);//把<font,font>换为大写,dhtml标签字符,正则判断太烦琐,采用转换办法。
$str=preg_replace("/(on[^ /.<>]+?)([ |>])/s","//2",$str);//取掉on事件

/*过滤超级连接的js*/
$str=preg_replace("/(href|src|background|url|dynsrc|expression|codebase)[=:/(]([ /"/']*?/w+/..*?|javascript|vbscript:[^>]*?)(/)?)([ >//])/si","//1='#' //3//4",$str);//取掉href=javascript:

//返回小写字符
$str=strtolower($str);
$str=str_replace("&","&#x26;",$str);

HTML在线编辑器原理

以前也用过HTML在线编辑器,但是一直不太清楚是怎么回事,今天在网上找了一下终于知道是怎么一回事了。 示例下载地址:http://download.csdn.net/detail/qm4050/...
  • qm4050
  • qm4050
  • 2013年01月10日 15:39
  • 5028

eWebSoft在线 HTML 编辑器的使用说明

 http://www.sunmood.com/bbs/non-cgi/editor/editor.html eWebEditor是的基于网页的、所见即所得的在线HTML编辑器。她能够在网页上实现许多...
  • rcyl2003
  • rcyl2003
  • 2007年04月30日 13:57
  • 1867

7款超酷的在线代码编辑器的实现收集(2012-05-26更新)

先列出本文收集的所有代码编辑器,后面一一介绍。 Bespin Ace Codepress Ecoder EditArea CodeAnyWhere CodeMir...
  • cuixiping
  • cuixiping
  • 2011年03月25日 19:57
  • 37227

html5在线编辑器效果和源码

html5在线编辑器效果和源码
  • tx101q
  • tx101q
  • 2017年02月01日 15:16
  • 901

HTML开发——项目心得(关于web布局以及代码冗余问题)

刚刚完成了一个练习小项目,这个项目包含了几个网页,但这几个网页的框架基本上是相同的。那么在做这样的项目时,首先要做的除了对单个网页的框架进行设计以外,我们还应该注意代码的冗余问题,就是要使你设计的那个...
  • tshshow
  • tshshow
  • 2017年10月21日 17:31
  • 553

完全过滤html代码,只留文字

public class RegexString { /* * 过滤指定标签       * @param sourceStr      * @param subStr      * @param r...
  • chenzenan
  • chenzenan
  • 2010年08月27日 14:59
  • 1255

什么是缓冲区溢出?有什么危害?其…

缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量溢的数 据覆盖在合法数据上,  危害:在当前网络与分布式系统安全中,被广泛利用的 50%以上都是缓冲区溢出,其中 最著名的例子是 ...
  • u014181676
  • u014181676
  • 2014年03月25日 21:51
  • 1787

php过滤html(php过滤html函数)

and echo strip_tags($text, ''); //过滤除开和外的所有标签 ?> 上面将输出的结果是: Test paragrap...
  • qiyuan371
  • qiyuan371
  • 2011年01月04日 09:56
  • 4704

ASP中的HTML在线编辑器的调用方法

        HTML在线编辑器不需要懂得使用Dreamweaver,会用Word就会使用此编辑器,在文章系统或者是新闻系统需要文字编辑的web程序中非常实用。   但是如何将html编辑器嵌入到w...
  • david161
  • david161
  • 2007年09月14日 10:43
  • 3339

php过滤危险html代码

用PHP过滤html里可能被利用来引入外部危险内容的代码。有些时候,需要让用户提交html内容,以便丰富用户发布的信息,当然,有些可能造成显示页面布局混乱的代码也在过滤范围内。  以下是引用片段:  ...
  • cheng151577
  • cheng151577
  • 2007年12月14日 16:50
  • 216
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:过滤html在线编辑器产生有危害代码
举报原因:
原因补充:

(最多只允许输入30个字)