`

(转)过滤在线编辑器产生的不安全html代码

阅读更多

过滤在线编辑器产生的不安全html代码
<?php  
  /**  
    *   过滤在线编辑器产生的不安全html代码.  
    *  
    *   PHP   versions   4   and   5  
    *  
    *   @copyright         版权所无,任意传播.  
    *   @link                   http://www.52sunny.net  
    *   @name                   html过滤    
    *   @version             v   0.0.10  
    *   @author               Lucklrj   (sunny_lrj@yeah.net,qq:7691272)  
    *   @lastmodified   2006-06-09   10:42   (Tue,   2006-06-09)    
    *   @notice               此版本只过滤js,框架,表单。  
                                    作者能力有限,使用本程序若产生任何安全问题,与本人无关。  
    欢迎来信与我交流。  
    */  
  $str="<tr><td   bgcolor=''#FFFFFF''>  
  <div   style=''url(123.offsetWidth)>";  
  //$str="url(javascript:x)";  
   
  /*不需要过滤的数组*/  
  $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>");  
   
  $htm_on_uper=array(  
  "<ACRONYM","span>ACRONYM>",  
  "<BASEFONT","BASEFONT>",  
  "<BUTTON","BUTTON>",  
  "<CAPTION","CAPTION>",  
  "<CLIENTINFORMATION","CLIENTINFORMATION>",  
  "<FONT","FONT>",  
  "<IMPLEMENTATION","IMPLEMENTATION>",  
  "<BUTTON","BUTTON>",  
  "<LOCATION","LOCATION>",  
  "<OPTION","OPTION>",  
  "<SELECTION","SELECTION>",  
  "<STRONG","STRONG>");  
 
  /*字符格式*/  
  $str=strtolower($str);  
  $str=preg_replace("/s+/",   "   ",   $str);//过滤回车  
  $str=preg_replace("/   +/"an style="COLOR: #000000">,   "   ",   $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);
   
echo   $str;  
  ?>
分享到:
评论

相关推荐

    自己开发在线编辑器一文的源代码

    在本文中,我们将深入探讨“XhtmlEditor”这一特定的在线编辑器源代码,以及它如何有助于开发小型在线编辑器。 首先,让我们了解HTMLEditor标签所代表的内容。HTML(超文本标记语言)编辑器是一种工具,它提供了...

    ubb代码编辑器 discuz

    1. **安全性**:与HTML相比,UBB代码不支持执行脚本,因此可以有效防止XSS(跨站脚本攻击)和其他恶意代码的注入。这保护了论坛用户和服务器的安全,降低了被黑客利用的风险。 2. **控制性**:管理员可以通过配置...

    自己开发HTML编辑器一文源代码2

    综上所述,开发一个HTML编辑器涉及的知识点包括HTML5的`contenteditable`属性、事件处理、富文本与HTML代码的转换、安全过滤以及操作历史管理等。通过分析“RichTextEditor”这个源代码,我们可以深入了解这些概念的...

    html在线编辑器(是用js编写的)

    **HtmlEditor** 可能是指一个更通用的HTML编辑器名称,这可能是一个简单或者定制化的解决方案,用于在网页上编辑HTML代码。它通常会包含基本的文本格式化功能,并可能提供一些高级特性,如预览、HTML标签查看和代码...

    Html2UBB在线编辑器

    Html2UBB在线编辑器是一种专门用于转换HTML代码到UBB(Undernet Bulletin Board)代码的工具,尤其适用于网络论坛和社区的评论功能。UBB是一种标记语言,它简化了HTML,使得用户在没有深入HTML知识的情况下也能方便...

    asp在线编辑器(可以实现图文并茂)

    5. **安全考虑**:由于在线编辑器允许用户输入HTML代码,所以必须考虑到XSS(跨站脚本攻击)等安全问题。应确保对用户提交的内容进行过滤或转义,防止恶意代码执行。 6. **用户体验**:为了提升用户体验,可以优化...

    ubb过滤web编辑器

    4. **安全过滤**:为了防止XSS攻击,编辑器需要过滤掉所有不安全的输入,如 `&lt;script&gt;` 标签或者URL中的可疑参数。 5. **富文本处理**:为了让用户能方便地编辑文本,编辑器需要支持各种格式化选项,如粗体、斜体、...

    HTML编辑器控件

    7. **兼容性测试**:由于不同的浏览器对HTML和JavaScript的支持程度不同,测试编辑器在各种主流浏览器上的表现也是必不可少的步骤。 综上所述,HTML编辑器控件在ASP.NET中扮演着至关重要的角色,它提供了一种直观的...

    dz动网论坛在线文本编辑器源代码

    dz动网论坛在线文本编辑器通过过滤和转义用户输入,有效防止了XSS跨站脚本攻击和其他潜在的安全风险。同时,编辑器还可能包含防止SQL注入的机制,保护论坛数据库不受恶意代码的侵害。 在技术实现上, dz动网论坛...

    在线编辑器插件

    在线编辑器插件是一种网页应用,它允许用户在浏览器中直接进行文本编辑、代码编写或者内容创作,无需下载安装任何软件。这样的工具对于初学者来说非常友好,因为它们提供了直观的界面和便捷的操作方式,降低了学习和...

    在线编辑器 html

    精简迷你 编辑器初始加载4个文件,包括:1个js(50k)+2个css(10k)+1个图片(5k),总共65k。若js和css文件进行gzip...提供完美的UBB可视化编辑器解决方案,在您获得安全高效代码存储的同时,又能享受可视化编辑的便捷。

    纯Html+js在线编辑器 非常容易上手

    然而,也需要注意一些挑战和安全问题,如XSS(跨站脚本攻击)风险,因为用户输入的HTML代码可能会被执行。因此,通常需要对用户提交的内容进行过滤和消毒,以防止恶意代码的注入。 总的来说,纯Html+js在线编辑器是...

    html 文本编辑器

    HTML文本编辑器是一种在线工具,它允许用户通过图形化用户界面创建和编辑HTML代码,而无需深入了解HTML语言的复杂性。这些编辑器通常提供WYSIWYG(所见即所得)的功能,使得用户可以像在普通文字处理软件中那样操作...

    新浪 html在线编辑器

    - **安全性**:在使用编辑器时,需要注意XSS攻击风险,对用户输入的HTML内容进行安全过滤和编码处理。 - **兼容性**:确保编辑器在主流浏览器如Chrome、Firefox、Safari和Edge等上有良好的表现。 新浪HTML在线...

    飞鱼在线编辑器

    确保在线编辑器安全的方法包括:对用户输入进行严格的过滤和转义,防止XSS(跨站脚本攻击);对上传文件进行检查,避免恶意文件的上传和执行;以及定期更新和修补任何已知的安全漏洞。 在实际使用过程中,开发者...

    KindEditor 在线HTML编辑器

    9. **安全性**:KindEditor在设计时考虑了安全性,如防止XSS攻击,通过过滤或转义不安全的HTML标签来保护网站免受恶意代码的侵害。 10. **易用性**:用户界面简洁直观,新用户也能快速上手。 在实际应用中,...

    Web 在线编辑器

    总之,Web在线编辑器是现代互联网应用中不可或缺的一部分,它的设计和实现涵盖了前端技术、后端服务以及用户体验等多个方面。随着技术的发展,未来的Web在线编辑器将更加智能、易用且功能强大。

    html(C/S编辑器)源代码

    8. **安全性**:在处理用户输入时,源代码需要考虑XSS(跨站脚本攻击)和CSRF(跨站请求伪造)等安全问题,通过过滤输入、验证用户操作和使用安全的API来防止攻击。 9. **用户体验**:一个优秀的HTML编辑器会关注...

    Asp.net2.0 HTML在线编辑器

    2. **WYSIWYG(所见即所得)**:编辑器提供了一个与Microsoft Word类似的界面,让用户在编写HTML时可以直接预览效果,无需了解HTML代码。 3. **后端交互**:Asp.net2.0作为后端框架,处理前端提交的数据,例如接收...

    java百度编辑器提交过滤标签方法

    ### Java百度编辑器提交过滤标签方法 在进行Web开发时,常常会遇到用户提交的数据包含HTML标签、脚本标签或样式标签的情况。为了防止XSS(跨站脚本攻击)等安全问题,开发者通常需要对这些输入进行过滤处理。本文将...

Global site tag (gtag.js) - Google Analytics