PHP 安全检测代码片段(分享)


Posted in PHP onJuly 05, 2013
/**
  * html转换输出(只转义' " 保留Html正常运行)
  * @param $param
  * @return string
  */
 function htmlEscape($param) {
    return trim(htmlspecialchars($param, ENT_QUOTES));
 }  /**
  * 是否数组(同时检测数组中是否存在值)
  * @param $params
  * @return boolean
  */
 function isArray($params) {
     return (!is_array($params) || !count($params)) ? false : true;
 } 
 /**
  * 变量是否在数组中存在(参数容错, 字符串是否存在于数组中)
  * @param $param
  * @param $params
  * @return boolean
  */
 function inArray($param, $params) {
    return (!in_array((string)$param, (array)$params)) ? false : true;
 }
 /**
  * 通用多类型混合转义函数
  * @param $var
  * @param $strip
  * @param $isArray
  * @return mixture
  */
 function sqlEscape($var, $strip = true, $isArray = false) {
    if (is_array($var)) {
        if (!$isArray) return " '' ";
        foreach ($var as $key => $value) {
            $var[$key] = trim(S::sqlEscape($value, $strip));
        }
        return $var;
    } elseif (is_numeric($var)) {
         return " '" . $var . "' ";
    } else {
        return " '" . addslashes($strip ? stripslashes($var) : $var) . "' ";
    }
}
     /**
      * 获取服务器变量
      * @param $keys
      * @return string
      */
     function getServer($keys) {
         $server = array();
         $array = (array) $keys;
         foreach ($array as $key) {
             $server[$key] = NULL;
             if (isset($_SERVER[$key])) {
                 $server[$key] = str_replace(array('<','>','"',"'",'%3C','%3E','%22','%27','%3c','%3e'), '', $_SERVER[$key]);
             }
         }
         return is_array($keys) ? $server : $server[$keys];
     }
     /**
      * 变量转义
      * @param $array
      */
     function slashes(&$array) {
         if (is_array($array)) {
             foreach ($array as $key => $value) {
                 if (is_array($value)) {
                     S::slashes($array[$key]);
                 } else {
                     $array[$key] = addslashes($value);
                 }
             }
         }
     }
     /**
      * 目录转换
      * @param unknown_type $dir
      * @return string
      */
     function escapeDir($dir) {
         $dir = str_replace(array("'",'#','=','`','$','%','&',';'), '', $dir);
         return rtrim(preg_replace('/(\/){2,}|(\\\){1,}/', '/', $dir), '/');
     }
     /**
      * 通用多类型转换
      * @param $mixed
      * @param $isint
      * @param $istrim
      * @return mixture
      */
     function escapeChar($mixed, $isint = false, $istrim = false) {
         if (is_array($mixed)) {
             foreach ($mixed as $key => $value) {
                 $mixed[$key] = S::escapeChar($value, $isint, $istrim);
             }
         } elseif ($isint) {
             $mixed = (int) $mixed;
         } elseif (!is_numeric($mixed) && ($istrim ? $mixed = trim($mixed) : $mixed) && $mixed) {
             $mixed = S::escapeStr($mixed);
         }
         return $mixed;
     }
     /**
      * 字符转换
      * @param $string
      * @return string
      */
     function escapeStr($string) {
         $string = str_replace(array("\0","%00","\r"), '', $string); //modified@2010-7-5
         $string = preg_replace(array('/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F]/','/&(?!(#[0-9]+|[a-z]+);)/is'), array('', '&'), $string);
         $string = str_replace(array("%3C",'<'), '<', $string);
         $string = str_replace(array("%3E",'>'), '>', $string);
         $string = str_replace(array('"',"'","\t",'  '), array('"',''','    ','  '), $string);
         return $string;
     }
     /**
      * 变量检查
      * @param $var
      */
     function checkVar(&$var) {
         if (is_array($var)) {
             foreach ($var as $key => $value) {
                 S::checkVar($var[$key]);
             }
         } elseif (P_W != 'admincp') {
             $var = str_replace(array('..',')','<','='), array('..',')','<','='), $var);
         } elseif (str_replace(array('<iframe','<meta','<script'), '', $var) != $var) {
             global $basename;
             $basename = 'javascript:history.go(-1);';
             adminmsg('word_error');
         }
     }
PHP 相关文章推荐
针对初学PHP者的疑难问答(1)
Oct 09 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
Nov 02 PHP
PHP系列学习之日期函数使用介绍
Aug 18 PHP
探讨php中遍历二维数组的几种方法详解
Jun 08 PHP
Function eregi is deprecated (解决方法)
Jun 21 PHP
PHP中preg_match函数正则匹配的字符串长度问题
May 27 PHP
如何把php5.3版本升级到php5.4或者php5.5
Jul 31 PHP
php验证手机号码
Nov 11 PHP
详解PHP实现执行定时任务
Dec 21 PHP
laravel如何开启跨域功能示例详解
Aug 31 PHP
php数据结构之顺序链表与链式线性表示例
Jan 22 PHP
Laravel框架控制器的request与response用法示例
Sep 30 PHP
如何使用php判断服务器是否是HTTPS连接
Jul 05 #PHP
使用PHP实现蜘蛛访问日志统计
Jul 05 #PHP
PHP系统命令函数使用分析
Jul 05 #PHP
解析PHP实现下载文件的两种方法
Jul 05 #PHP
国外十大最流行的PHP框架排名
Jul 04 #PHP
php字符串截取的简单方法
Jul 04 #PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
Jul 03 #PHP
You might like
PHP学习 运算符与运算符优先级
2008/06/15 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
2020/04/05 PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
2014/09/22 PHP
PHP检测用户是否关闭浏览器的方法
2016/02/14 PHP
PHP中FTP相关函数小结
2016/07/15 PHP
基于thinkPHP框架实现留言板的方法
2016/10/17 PHP
PHP hex2bin()函数用法讲解
2019/02/25 PHP
[原创]来自ImageSee官方 JavaScript图片浏览器
2008/01/16 Javascript
Mootools 1.2教程 定时器和哈希简介
2009/09/15 Javascript
JavaScript判断窗口是否最小化的代码(跨浏览器)
2010/08/01 Javascript
深入理解JavaScript系列(16) 闭包(Closures)
2012/04/12 Javascript
用js读、写、删除Cookie代码续篇
2014/12/03 Javascript
nodejs调用cmd命令实现复制目录
2015/05/04 NodeJs
Bootstrap每天必学之滚动监听
2016/03/16 Javascript
React Router v4 入坑指南(小结)
2018/04/08 Javascript
vue.js学习笔记之v-bind和v-on解析
2018/05/03 Javascript
vue开发环境配置跨域的方法步骤
2019/01/16 Javascript
vue全局自定义指令-元素拖拽的实现代码
2019/04/14 Javascript
js实现无限层级树形数据结构(创新算法)
2020/02/27 Javascript
手把手教你python实现SVM算法
2017/12/27 Python
Python中%是什么意思?python中百分号如何使用?
2018/03/20 Python
Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例
2018/07/18 Python
Python编程深度学习计算库之numpy
2018/12/28 Python
Django框架使用mysql视图操作示例
2019/05/15 Python
如何定义TensorFlow输入节点
2020/01/23 Python
pandas使用之宽表变窄表的实现
2020/04/12 Python
python打开文件的方式有哪些
2020/06/29 Python
Python 无限级分类树状结构生成算法的实现
2021/01/21 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
2021/02/25 Python
html5实现canvas阴影效果示例
2014/05/07 HTML / CSS
美国办公用品购物网站:Quill.com
2016/09/01 全球购物
铁路工务反思材料
2014/02/07 职场文书
亮化工程实施方案
2014/03/17 职场文书
同事去世追悼词
2015/06/23 职场文书
spring cloud gateway中如何读取请求参数
2021/07/15 Java/Android
MySQL为数据表建立索引的原则详解
2022/03/03 MySQL