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新手上路(四)
Oct 09 PHP
PHP中的extract的作用分析
Apr 09 PHP
mysql下创建字段并设置主键的php代码
May 16 PHP
PHP mb_convert_encoding文字编码的转换函数介绍
Nov 10 PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
Jun 14 PHP
PHP限制页面只能在微信自带浏览器访问的代码
Jan 15 PHP
ThinkPHP实现递归无级分类――代码少
Jul 29 PHP
PHP生成图像验证码的方法小结(2种方法)
Jul 18 PHP
Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能示例
Jul 07 PHP
thinkPHP5框架分页样式类完整示例
Sep 01 PHP
浅谈laravel orm 中的一对多关系 hasMany
Oct 21 PHP
PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析
Dec 12 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
在字符串中把网址改成超级链接
2006/10/09 PHP
PHP中获取变量的变量名的一段代码的bug分析
2011/07/07 PHP
php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
2011/11/07 PHP
php.ini修改php上传文件大小限制的方法详解
2013/06/17 PHP
解析:使用php mongodb扩展时 需要注意的事项
2013/06/18 PHP
php实现图片添加描边字和马赛克的方法
2014/12/10 PHP
PHP快速推送微信模板消息
2017/04/14 PHP
JavaScript 事件记录使用说明
2009/10/20 Javascript
Jquery升级新版本后选择器的语法问题
2010/06/02 Javascript
Knockout数组(observable)使用详解示例
2013/11/15 Javascript
Js操作树节点自动折叠展开的几种方法
2014/05/05 Javascript
Jquery对select的增、删、改、查操作
2015/02/06 Javascript
jquery结合html实现中英文页面切换
2016/11/29 Javascript
nodejs动态创建二维码的方法
2017/08/12 NodeJs
JavaScript私有变量实例详解
2019/01/24 Javascript
基于Vue2-Calendar改进的日历组件(含中文使用说明)
2019/04/14 Javascript
富文本编辑器vue2-editor实现全屏功能
2019/05/26 Javascript
Node.js中console.log()输出彩色字体的方法示例
2019/12/01 Javascript
一看就会的vuex实现登录验证(附案例)
2020/01/09 Javascript
Python通过90行代码搭建一个音乐搜索工具
2015/07/29 Python
python定时复制远程文件夹中所有文件
2019/04/30 Python
python爬虫 urllib模块url编码处理详解
2019/08/20 Python
创建Shapefile文件并写入数据的例子
2019/11/26 Python
python 实现矩阵填充0的例子
2019/11/29 Python
解决Python3下map函数的显示问题
2019/12/04 Python
Python获取对象属性的几种方式小结
2020/03/12 Python
让Django的BooleanField支持字符串形式的输入方式
2020/05/20 Python
python实现逻辑回归的示例
2020/10/09 Python
New delete 与malloc free 的联系与区别
2013/02/04 面试题
工作建议书范文
2014/05/13 职场文书
2014年预备党员群众路线教育实践活动对照检查材料思想汇报
2014/10/02 职场文书
公安领导班子四风问题个人整改措施思想汇报
2014/10/09 职场文书
小学生作文评语集锦
2014/12/25 职场文书
工厂仓管员岗位职责
2015/04/01 职场文书
结婚纪念日感言
2015/08/01 职场文书
小学生组织委员竞选稿
2015/11/21 职场文书