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 相关文章推荐
DOMXML函数笔记
Oct 09 PHP
IIS下配置Php+Mysql+zend的图文教程
Dec 08 PHP
php PDO中文乱码解决办法
Jul 20 PHP
php弹出对话框实现重定向代码
Jan 23 PHP
php使用Cookie控制访问授权的方法
Jan 21 PHP
php简单分页类实现方法
Feb 26 PHP
php使用Jpgraph绘制柱形图的方法
Jun 10 PHP
PHP实现生成唯一会员卡号
Aug 24 PHP
PHP文件系统管理(实例讲解)
Sep 19 PHP
对php 判断http还是https,以及获得当前url的方法详解
Jan 15 PHP
Laravel5.7 数据库操作迁移的实现方法
Apr 12 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
Jul 26 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 编程的 5个良好习惯
2009/02/20 PHP
分享下页面关键字抓取components.arrow.com站点代码
2014/01/30 PHP
php文件包含的几种方式总结
2019/09/19 PHP
JavaScript中null与undefined分析
2009/07/25 Javascript
发布一个基于javascript的动画类 Fx.js
2010/11/05 Javascript
解析jquery中的ajax缓存问题
2013/12/19 Javascript
关于编写性能高效的javascript事件的技术
2014/11/28 Javascript
JavaScript判断浏览器类型的方法
2015/02/10 Javascript
微信小程序 选项卡的简单实例
2017/05/24 Javascript
浅谈react+es6+webpack的基础配置
2017/08/09 Javascript
原生JavaScript来实现对dom元素class的操作方法(推荐)
2017/08/16 Javascript
前端开发不得不知的10个最佳ES6特性
2017/08/30 Javascript
vuex的简单使用教程
2018/02/02 Javascript
JS设计模式之访问者模式定义与用法分析
2018/02/05 Javascript
javascript标准库(js的标准内置对象)总结
2018/05/26 Javascript
vue+django实现一对一聊天功能的实例代码
2019/07/17 Javascript
详解vue+axios给开发环境和生产环境配置不同的接口地址
2019/08/16 Javascript
使用next.js开发网址缩短服务的方法
2020/06/17 Javascript
TypeScript魔法堂之枚举的超实用手册
2020/10/29 Javascript
[52:20]DOTA2-DPC中国联赛正赛 SAG vs XGBO3 第一场 3月5日
2021/03/11 DOTA
用python与文件进行交互的方法
2018/03/01 Python
python对绑定事件的鼠标、按键的判断实例
2019/07/17 Python
Python编写打字训练小程序
2019/09/26 Python
python 实现仿微信聊天时间格式化显示的代码
2020/04/17 Python
使用Python爬虫爬取小红书完完整整的全过程
2021/01/19 Python
解决pip安装tensorflow中出现的no module named tensorflow.python 问题方法
2021/02/20 Python
新闻记者实习自我鉴定
2013/09/19 职场文书
大专毕业生自我鉴定
2013/11/21 职场文书
办公室文书岗位职责
2013/12/16 职场文书
社区中秋节活动方案
2014/01/29 职场文书
教学实验楼管理制度
2014/02/01 职场文书
员工考核管理制度
2014/02/02 职场文书
哈弗商学院毕业生求职信
2014/02/26 职场文书
艺术学院毕业生自我评价
2014/03/02 职场文书
深度学习小工程练习之垃圾分类详解
2021/04/14 Python
十大最帅动漫男主 碓冰拓海上榜,第一是《灌篮高手》男主角
2022/03/18 日漫