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 使用post,get的一种简洁方式
Apr 25 PHP
php中serialize序列化与json性能测试的示例分析
Apr 27 PHP
高性能PHP框架Symfony2经典入门教程
Jul 08 PHP
在Win7 中为php扩展配置Xcache
Oct 08 PHP
php动态生成版权所有信息的方法
Mar 24 PHP
PHP中的事务使用实例
May 26 PHP
常见的四种POST 提交数据方式(小总结)
Oct 08 PHP
JavaScript与HTML结合的基本使用方法整理
Oct 12 PHP
PHP 5.6.11 访问SQL Server2008R2的几种情况详解
Aug 08 PHP
如何判断php mysqli扩展类是否开启
Dec 24 PHP
PHP函数积累总结
Mar 19 PHP
laravel框架中间件简单使用方法示例
Jan 25 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
discuz Passport 通行证 整合笔记
2008/06/30 PHP
PHP之数组学习
2011/05/29 PHP
php读取文件内容的三种可行方法示例介绍
2014/02/08 PHP
一个基于phpQuery的php通用采集类分享
2014/04/09 PHP
php实现的读取CSV文件函数示例
2017/02/07 PHP
浅谈PHP表单提交(POST&amp;GET&amp;URL编/解码)
2017/04/03 PHP
YII2框架中actions的作用与使用方法示例
2020/03/13 PHP
jquery的Theme和Theme Switcher使用小结
2010/09/08 Javascript
jquery分页插件AmSetPager(自写)
2013/04/15 Javascript
javascript arguments使用示例
2014/12/16 Javascript
跟我学习javascript的最新标准ES6
2015/11/20 Javascript
JS中取二维数组中最大值的方法汇总
2016/04/17 Javascript
ES6记录异步函数的执行时间详解
2016/08/31 Javascript
Vue.js每天必学之指令系统与自定义指令
2016/09/07 Javascript
详解AngularJs中$sce与$sceDelegate上下文转义服务
2016/09/21 Javascript
微信小程序 图片绝对定位(背景图片)
2017/04/05 Javascript
详解vue-cli 脚手架项目-package.json
2017/07/04 Javascript
关于JavaScript语句后面的分号问题
2017/12/07 Javascript
angularjs 缓存的使用详解
2018/03/19 Javascript
Vue结合Video.js播放m3u8视频流的方法示例
2018/05/04 Javascript
微信小程序云开发之新手环境配置
2019/05/16 Javascript
python求解水仙花数的方法
2015/05/11 Python
python开发之IDEL(Python GUI)的使用方法图文详解
2015/11/12 Python
老生常谈python之鸭子类和多态
2017/06/13 Python
Python中%是什么意思?python中百分号如何使用?
2018/03/20 Python
Python使用matplotlib绘制三维图形示例
2018/08/25 Python
python切片的步进、添加、连接简单操作示例
2019/07/11 Python
PyTorch 解决Dataset和Dataloader遇到的问题
2020/01/08 Python
Python如何测试stdout输出
2020/08/10 Python
简单的HTML5初步入门教程
2015/09/29 HTML / CSS
销售工作人员的自我评价分享
2013/11/10 职场文书
培训班开班仪式主持词
2014/03/28 职场文书
2014年乡镇人大工作总结
2014/11/25 职场文书
担保贷款承诺书
2015/04/30 职场文书
员工拾金不昧表扬稿
2015/05/05 职场文书
毕业生入职感言
2015/07/31 职场文书