`
lucklrj
  • 浏览: 24841 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

过滤在线编辑器产生的不安全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","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("/ +/", " ", 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

    这个编辑器的设计目的是提供一种更安全、更可控的方式来输入和展示用户生成的内容。 **什么是UBB代码?** UBB,全称为“统一BBCode”,是一种轻量级的标记语言,类似于HTML但更为简化的代码格式。它主要用于论坛、...

    Html2UBB在线编辑器

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

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

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

    ubb过滤web编辑器

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

    C++代码文档生成器 根据代码及注释自动生成代码文档.zip

    C++代码文档生成器是一种工具,它能够自动分析C++源代码,并基于代码中的注释生成详细的文档。这种工具在软件开发过程中非常有用,因为它可以帮助开发者快速了解代码结构,节省了手动编写文档的时间,同时也确保了...

    在线编辑器 html

    实现Word代码自动检测并清理,提供高效完美的Word代码过滤方案,生成代码最优化精简,但是却不丢失任何细节效果。 安全的UBB 提供完美的UBB可视化编辑器解决方案,在您获得安全高效代码存储的同时,又能享受可视化...

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

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

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

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

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

    编辑器生成的HTML代码可以直接在浏览器中解析和渲染,呈现用户创建的丰富格式文本。 5. **安全考虑**:由于在线编辑器允许用户输入HTML代码,所以必须考虑到XSS(跨站脚本攻击)等安全问题。应确保对用户提交的内容...

    HTML编辑器控件

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

    html 文本编辑器

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

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

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

    2.时间插件、XSS过滤、在线编辑器使用.pdf

    总结来说,这篇文档教会了我们如何在ThinkPHP框架中集成时间插件以增强搜索功能,以及如何处理在线编辑器与过滤机制之间的冲突,确保网站的安全性。同时,它也强调了XSS过滤的重要性,并提供了使用htmlpurifier来有...

    在线编辑器插件

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

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

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

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

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

    KindEditor 在线HTML编辑器

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

    新浪 html在线编辑器

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

    Kindeditor在线文本编辑器如何过滤HTML

    KindEditor是一个开源的HTML可视化编辑器,主要用JavaScript编写,能够提供所见即所得的编辑效果,广泛适用于包括IE、Firefox、Chrome、Safari、Opera在内的主流浏览器。它支持与多种服务器端语言(如Java、.NET、...

Global site tag (gtag.js) - Google Analytics