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 相关文章推荐
windows下PHP APACHE MYSQ完整配置
Jan 02 PHP
PHP stream_context_create()作用和用法分析
Mar 29 PHP
php中读写文件与读写数据库的效率比较分享
Oct 19 PHP
php判断GIF图片是否为动画的方法
Sep 04 PHP
PHP处理JSON字符串key缺少双引号的解决方法
Sep 16 PHP
Mac OS下配置PHP+MySql环境
Feb 25 PHP
php替换字符串中间字符为省略号的方法
May 04 PHP
php解决和避免form表单重复提交的几种方法
Aug 31 PHP
PHP自定义多进制的方法
Nov 03 PHP
WHOOPS PHP调试库的使用
Sep 29 PHP
php对象工厂类完整示例
Aug 09 PHP
laravel dingo API返回自定义错误信息的实例
Sep 29 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
php无限极分类实现的两种解决方法
2013/04/28 PHP
PHP中ob_start函数的使用说明
2013/11/11 PHP
一漂亮的PHP图片验证码实例
2014/03/21 PHP
PHP从尾到头打印链表实例讲解
2018/09/27 PHP
PHP网站常见安全漏洞,及相应防范措施总结
2021/03/01 PHP
JavaScript 解析Json字符串的性能比较分析代码
2009/12/16 Javascript
jQuery控制的不同方向的滑动(向左、向右滑动等)
2014/07/18 Javascript
Jquery实现由下向上展开效果的例子
2014/12/08 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
2015/11/18 Javascript
jquery对复选框(checkbox)的操作汇总
2016/01/13 Javascript
网页挂马方式整理及详细介绍
2016/11/03 Javascript
node.JS md5加密中文与php结果不一致的解决方法
2017/05/05 Javascript
nodejs 搭建简易服务器的图文教程(推荐)
2017/07/18 NodeJs
Vuex持久化插件(vuex-persistedstate)解决刷新数据消失的问题
2019/04/16 Javascript
解决layui追加或者动态修改的表单元素“没效果”的问题
2019/09/18 Javascript
基于vue hash模式微信分享#号的解决
2020/09/07 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
2020/09/21 Javascript
[08:56]DOTA2-DPC中国联赛2月23日Recap集锦
2021/03/11 DOTA
python3.4用函数操作mysql5.7数据库
2017/06/23 Python
python matlibplot绘制3D图形
2018/07/02 Python
Python OpenCV中的resize()函数的使用
2019/06/20 Python
对python中的float除法和整除法的实例详解
2019/07/20 Python
简单分析python的类变量、实例变量
2019/08/23 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
2020/01/08 Python
解决Python图形界面中设置尺寸的问题
2020/03/05 Python
django美化后台django-suit的安装配置操作
2020/07/12 Python
python 自动识别并连接串口的实现
2021/01/19 Python
数据管理员的自我评价分享
2013/11/15 职场文书
品质管理部岗位职责范文
2014/03/01 职场文书
煤矿开采专业求职信
2014/07/08 职场文书
政府个人对照检查材料思想汇报
2014/10/08 职场文书
六年级学生期末评语
2014/12/26 职场文书
2015年高校辅导员工作总结
2015/04/20 职场文书
2015年中秋节主持词
2015/07/30 职场文书
优秀范文:《但愿人长久》教学反思3篇
2019/10/24 职场文书
vue使用localStorage持久性存储实现评论列表
2022/04/14 Vue.js