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 相关文章推荐
用Zend Encode编写开发PHP程序
Feb 21 PHP
解析dedeCMS验证码的实现代码
Jun 07 PHP
基于PHP文件操作的详细诠释
Jun 21 PHP
php calender(日历)二个版本代码示例(解决2038问题)
Dec 24 PHP
PHP获取服务器端信息的方法
Nov 28 PHP
浅析iis7.5安装配置php环境
May 10 PHP
PHP连接Nginx服务器并解析Nginx日志的方法
Aug 16 PHP
PHP实现防盗链的方法分析
Jul 25 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
解决laravel资源加载路径设置的问题
Oct 14 PHP
php 的多进程操作实践案例分析
Feb 28 PHP
TP5框架实现的数据库备份功能示例
Apr 05 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
zf框架的zend_cache缓存使用方法(zend框架)
2014/03/14 PHP
浅谈php扩展imagick
2014/06/02 PHP
区分JS中的undefined,null,&quot;&quot;,0和false
2007/03/08 Javascript
使用Post提交时须将空格转换成加号的解释
2013/01/14 Javascript
XMLHttpRequest处理xml格式的返回数据(示例代码)
2013/11/21 Javascript
JS测试显示屏分辨率以及屏幕尺寸的方法
2013/11/22 Javascript
jQuery中outerHeight()方法用法实例
2015/01/19 Javascript
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
2016/06/23 Javascript
浅谈JQuery+ajax+jsonp 跨域访问
2016/06/25 Javascript
移动端js图片查看器
2016/11/17 Javascript
Nodejs 搭建简单的Web服务器详解及实例
2016/11/30 NodeJs
vue实现页面加载动画效果
2017/09/19 Javascript
利用JS判断客户端类型你应该知道的四种方法
2017/12/22 Javascript
vue iview实现动态路由和权限验证功能
2018/04/17 Javascript
NodeJs项目中关闭ESLint的方法
2018/08/09 NodeJs
微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
2018/08/22 Javascript
React router动态加载组件之适配器模式的应用详解
2018/09/12 Javascript
Vue.js + Nuxt.js 项目中使用 Vee-validate 表单校验
2019/04/22 Javascript
详解vuex之store源码简单解析
2019/06/13 Javascript
微信小程序 腾讯地图SDK 获取当前地址实现解析
2019/08/12 Javascript
[04:38]完美世界携手游戏风云打造 卡尔工作室饰品系统篇
2013/04/25 DOTA
[04:50]2019DOTA2高校联赛秋季赛四强集锦
2019/12/27 DOTA
实例讲解Python中函数的调用与定义
2016/03/14 Python
解决项目pycharm能运行,在终端却无法运行的问题
2019/01/19 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
2020/05/13 Python
django 解决扩展自带User表遇到的问题
2020/05/14 Python
HTML5调用手机发短信和打电话功能
2020/04/29 HTML / CSS
Hawes & Curtis澳大利亚官网:英国经典服饰品牌
2018/10/29 全球购物
linux面试题参考答案(9)
2015/01/07 面试题
公务员政审个人鉴定
2014/02/25 职场文书
医学生临床实习自我评价
2014/03/07 职场文书
担保贷款承诺书
2015/04/30 职场文书
Vue CLI中模式与环境变量的深入详解
2021/05/30 Vue.js
基于MySql验证的vsftpd虚拟用户
2021/11/07 MySQL
python获取字符串中的email
2022/03/31 Python
nginx之queue的具体使用
2022/06/28 Servers