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 相关文章推荐
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
Jul 09 PHP
一个PHP操作Access类(PHP+ODBC+Access)
Jan 02 PHP
深入理解PHP原理之异常机制
Aug 21 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
Dec 29 PHP
php array_intersect比array_diff快(附详细的使用说明)
Jul 03 PHP
php define的第二个参数使用方法
Nov 04 PHP
使用PHPCMS搭建wap手机网站
Sep 20 PHP
yii通过小物件生成view的方法
Oct 08 PHP
基于CI框架的微信网页授权库示例
Nov 25 PHP
PHP实现判断数组是一维、二维或几维的方法
Feb 06 PHP
yii2 resetful 授权验证详解
May 18 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
Feb 28 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
攻克CakePHP系列三 表单数据增删改
2008/10/22 PHP
PHP提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
用穿越火线快速入门php面向对象
2012/02/22 PHP
gd库图片下载类实现下载网页所有图片的php代码
2012/08/20 PHP
php中unlink()、mkdir()、rmdir()等方法的使用介绍
2012/12/21 PHP
php使用array_search函数实现数组查找的方法
2015/06/12 PHP
php5.x禁用eval的操作方法
2018/10/19 PHP
laravel 字段格式化 modle 字段类型转换方法
2019/09/30 PHP
prettify 代码高亮着色器google出品
2010/12/28 Javascript
基于jquery tab切换(防止页面刷新)
2012/05/23 Javascript
javascript date格式化示例
2013/09/25 Javascript
jQuery中操控hidden、disable等无值属性的方法
2014/01/06 Javascript
Javascript中的关键字和保留字整理
2014/10/16 Javascript
深入浅析AngularJS中的module(模块)
2016/01/04 Javascript
AngularJS动态生成div的ID源码解析
2016/08/29 Javascript
js控住DOM实现发布微博效果
2016/08/30 Javascript
详解Angular2中的编程对象Observable
2016/09/17 Javascript
JS回调函数基本定义与用法实例分析
2017/05/24 Javascript
详解webpack介绍&amp;安装&amp;常用命令
2017/06/29 Javascript
JS实现将链接生成二维码并转为图片的方法
2018/03/17 Javascript
浅谈从React渲染流程分析Diff算法
2018/09/08 Javascript
在vue+element ui框架里实现lodash的debounce防抖
2019/11/13 Javascript
js+css3实现简单时钟特效
2020/09/13 Javascript
Python反射的用法实例分析
2018/02/11 Python
解决Python的str强转int时遇到的问题
2018/04/09 Python
用Python shell简化开发
2018/08/08 Python
Python如何解除一个装饰器
2020/08/07 Python
基于HTML5 的人脸识别活体认证的实现方法
2016/06/22 HTML / CSS
国际知名设计师时装商店:Coggles
2016/09/05 全球购物
双十佳事迹材料
2014/01/29 职场文书
优秀学生获奖感言
2014/02/15 职场文书
学生会竞选演讲稿
2014/04/24 职场文书
竞选大队长演讲稿
2014/04/29 职场文书
新郎父母婚礼致辞
2015/07/27 职场文书
什么是创业计划书?什么是商业计划书?这里一一解答
2019/07/12 职场文书
详细介绍Next.js脚手架完整搭建封装
2022/04/26 Javascript