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单件模式结合命令链模式使用说明
Sep 07 PHP
解析php中session的实现原理以及大网站应用应注意的问题
Jun 17 PHP
一漂亮的PHP图片验证码实例
Mar 21 PHP
PHP include任意文件或URL介绍
Apr 29 PHP
PHP5.3以上版本安装ZendOptimizer扩展
Mar 27 PHP
PHP数组与对象之间使用递归实现转换的方法
Jun 24 PHP
PHP实现的数独求解问题示例
Apr 18 PHP
搭建自己的PHP MVC框架详解
Aug 16 PHP
Laravel学习教程之从入口到输出过程详解
Aug 27 PHP
php中各种定义变量的方法小结
Oct 18 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
Jun 13 PHP
PHP fclose函数用法总结
Feb 15 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
全国中波电台频率表
2020/03/11 无线电
PHP 截取字符串 分别适合GB2312和UTF8编码情况
2009/02/12 PHP
通过php快速统计某个数据库中每张表的数据量
2012/09/04 PHP
PHP输出时间差函数代码
2013/01/28 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
2015/03/18 PHP
一直复略了的一个问题,关于表单重复提交
2007/02/15 Javascript
用javascript动态调整iframe高度的方法
2007/03/06 Javascript
基于jQuery的input输入框下拉提示层(自动邮箱后缀名)
2012/06/14 Javascript
js实现图片在未加载完成前显示加载中字样
2014/09/03 Javascript
javascript实现禁止右键和F12查看源代码
2014/12/26 Javascript
jQuery点击按钮弹出遮罩层且内容居中特效
2015/12/14 Javascript
原生JavaScript实现Ajax的方法
2016/04/07 Javascript
AngularJS基础 ng-class-odd 指令示例
2016/08/01 Javascript
微信小程序  action-sheet详解及实例代码
2016/11/09 Javascript
深入理解Javascript中的观察者模式
2017/02/20 Javascript
原生js实现瀑布流布局
2017/03/08 Javascript
JavaScript 数组的进化与性能分析
2017/09/18 Javascript
微信小程序实现左滑修改、删除功能
2020/10/19 Javascript
javascript+HTML5 canvas绘制时钟功能示例
2019/05/15 Javascript
使用Vue 实现滑动验证码功能
2019/06/27 Javascript
layui的select联动实现代码
2019/09/28 Javascript
Javascript摸拟自由落体与上抛运动原理与实现方法详解
2020/04/08 Javascript
让你30分钟快速掌握vue3教程
2020/10/26 Javascript
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
2020/11/18 Vue.js
Python下简易的单例模式详解
2019/04/08 Python
pycharm软件实现设置自动保存操作
2020/06/08 Python
python中random.randint和random.randrange的区别详解
2020/09/20 Python
python BeautifulSoup库的安装与使用
2020/12/17 Python
国际知名设计师时装商店:Coggles
2016/09/05 全球购物
英国男士时尚购物网站:Stuarts London
2017/10/22 全球购物
求职信内容考虑哪几点
2013/10/05 职场文书
廉政教育的心得体会
2014/09/01 职场文书
三下乡个人总结
2015/03/04 职场文书
培训班通知
2015/04/25 职场文书
红高粱观后感
2015/06/10 职场文书
2016大学迎新晚会开场白
2015/11/24 职场文书