php 一个过虑xxs的代码
一个过虑xxs的代码
public static function removeXSS($str) {
$str = str_replace('<!-- -->', '', $str);
$str = preg_replace('~/\*[ ]+\*/~i', '', $str);
$str = preg_replace('/\\\0{0,4}4[0-9a-f]/is', '', $str);
$str = preg_replace('/\\\0{0,4}5[0-9a]/is', '', $str);
$str = preg_replace('/\\\0{0,4}6[0-9a-f]/is', '', $str);
$str = preg_replace('/\\\0{0,4}7[0-9a]/is', '', $str);
$str = preg_replace('/�{0,8}[0-9a-f]{2};/is', '', $str);
$str = preg_replace('/�{0,8}[0-9]{2,3};/is', '', $str);
$str = preg_replace('/�{0,8}[0-9]{2,3};/is', '', $str); $str = htmlspecialchars($str);
//$str = preg_replace('/</i', '<', $str);
//$str = preg_replace('/>/i', '>', $str); // 非成对标签
$lone_tags = array("img", "param", "br", "hr");
foreach ($lone_tags as $key => $val)
{
$val = preg_quote($val);
$str = preg_replace('/<' . $val . '(.*)(\/?)>/isU', '<' . $val . "\\1\\2>", $str);
$str = self::transCase($str);
$str = preg_replace_callback('/<' . $val . '(.+?)>/i', create_function('$temp', 'return str_replace(""","\"",$temp[0]);'), $str);
}
$str = preg_replace('/&/i', '&', $str); // 成对标签
$double_tags = array("table", "tr", "td", "font", "a", "object", "embed", "p", "strong", "em", "u", "ol", "ul", "li", "div", "tbody", "span", "blockquote", "pre", "b", "font");
foreach ($double_tags as $key => $val)
{
$val = preg_quote($val);
$str = preg_replace('/<' . $val . '(.*)>/isU', '<' . $val . "\\1>", $str);
$str = self::transCase($str);
$str = preg_replace_callback('/<' . $val . '(.+?)>/i', create_function('$temp', 'return str_replace(""","\"",$temp[0]);'), $str);
$str = preg_replace('/<\/' . $val . '>/is', '</' . $val . ">", $str);
}
// 清理js
$tags = Array(
'javascript',
'vbscript',
'expression',
'applet',
'meta',
'xml',
'behaviour',
'blink',
'link',
'style',
'script',
'embed',
'object',
'iframe',
'frame',
'frameset',
'ilayer',
'layer',
'bgsound',
'title',
'base',
'font'
); foreach ($tags as $tag)
{
$tag = preg_quote($tag);
$str = preg_replace('/' . $tag . '\(.*\)/isU', '\\1', $str);
$str = preg_replace('/' . $tag . '\s*:/isU', $tag . '\:', $str);
} $str = preg_replace('/[\s]+on[\w]+[\s]*=/is', '', $str); Return $str;
}
链接地址:https://github.com/sillydong/CZD_Yaf_Extension/blob/master/library/Tools.php
不错的yaf封闭mysql地址 https://github.com/jonsonxu/yaf
php 一个过虑xxs的代码的更多相关文章
- 给 VS 2010 选一个好用的代码行数统计器(转)
给 VS 2010 选一个好用的代码行数统计器 分类: Tricks2011-02-25 05:40 3891人阅读 评论(0) 收藏 举报 2010c 推荐一个VS插件,支持2005/2008/20 ...
- 一个 11 行 Python 代码实现的神经网络
一个 11 行 Python 代码实现的神经网络 2015/12/02 · 实践项目 · 15 评论· 神经网络 分享到:18 本文由 伯乐在线 - 耶鲁怕冷 翻译,Namco 校稿.未经许可,禁止转 ...
- 做了一个简易的git 代码自动部署脚本
做了一个简易的git 代码自动部署脚本 http://my.oschina.net/caomenglong/blog/472665 发表于2个月前(2015-06-30 21:08) 阅读(200 ...
- 想做一个整合开源安全代码扫描工具的代码安全分析平台 - Android方向调研
想做一个整合开源安全代码扫描工具的代码安全分析平台 - Android方向调研 http://blog.csdn.net/testing_is_believing/article/details/22 ...
- 一个只有99行代码的JS流程框架(二)
欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 张镇圳,腾讯Web前端高级工程师,对内部系统前端建设有多年经验,喜欢钻研捣鼓各种前端组件和框架. 导语 前面写 ...
- html是什么?一个完整的html代码告诉你(完整实例版)
html什么意思?这篇文章主要为大家仔细的解释了HTML文档的一个基础的完整代码,还有具体的实例解释,让大家能一下就看懂HTML的基础结构和用法.下面我们一起来看看吧一.html是什么?点击查看htm ...
- 点击文字弹出一个DIV层窗口代码
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...
- (转)如何基于FFMPEG和SDL写一个少于1000行代码的视频播放器
原文地址:http://www.dranger.com/ffmpeg/ FFMPEG是一个很好的库,可以用来创建视频应用或者生成特定的工具.FFMPEG几乎为你把所有的繁重工作都做了,比如解码.编码. ...
- 推荐一个小而美的Python代码格式化工具
代码可读性是评判代码质量的标准之一,有一个衡量代码质量的标准是 Martin 提出的 “WFT” 定律,即每分钟爆出 “WTF” 的次数.你在读别人代码或者做 Code Review 的时候有没有 “ ...
随机推荐
- bzoj 1012 BST 支持插入,区间最大
水... /************************************************************** Problem: 1012 User: idy002 Lang ...
- Java获取Access数据库连接单例简单实例
Java在连接Access数据库时比较方便,不用导入第三方的jar包,jdk中内置的odbc可以完成Access数据库的访问,需要注意的是,我们首先要配置Access数据库的数据源,还要区分x86和x ...
- 使用辗转相除法求两个数的最大公因数(python实现)
数学背景: 整除的定义: 任给两个整数a,b,其中b≠0,如果存在一个整数q使得等式 a = bq 成立,我们就说是b整除 ...
- mysql 存储过程案列一个。
-- 设置分隔符 DELIMITER // /*初始化*/ DROP PROCEDURE IF EXISTS useCursor // /*建立 存储过程 create */ CREATE PROCE ...
- Ubuntu14.04环境下配置TFTP服务器
<<<<<<<<<<<<<<<<<<<<<<<<< ...
- 微信小程序导航栏,下面内容滑动,上册导航栏跟着滑动,内容随着导航栏滑动
16.类似微信导航栏滑动.png 今日头条导航栏,下面滑动上面跟着滑动 index.wxml <swiper class="content" style="heig ...
- 典型案例收集-OpenVPN不同网段的访问控制(转)
一.案例1 针对不同的客户端指定不同的等级和权限. 通常的方法是: 1.每个客户端分配不同的IP地址: 2.利用防火墙对不同的IP地址进行控制: 例如: 1.公司内部网段是10.66.4.0/24: ...
- Ubuntu 16.09下iptables通过raw表实现日志输出和调试
1.先配置好raw表日志打点功能 参考:http://www.cnblogs.com/EasonJim/p/8413563.html 2.配置好messages文件 参考:http://www.cnb ...
- HTML5 book响应式翻页效果
翻页,HTML5源码下载,HTML5响应式翻页效果,鼠标移到右上角会看到翻页效果,需要鼠标拖动后翻页,支持ie9+,html5浏览器. 单页和双页. 自动播放和暂停. 点击左右翻页. 鼠标点击左右页面 ...
- Virtual Treeview - Paint cycles and stages
The most complex process in Virtual Treeview is without doubts its painting. Read here what stages V ...