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数组应该有多大的分析
Jul 30 PHP
php getsiteurl()函数
Sep 05 PHP
PHP 动态随机生成验证码类代码
Apr 09 PHP
php笔记之:数据类型与常量的使用分析
May 14 PHP
深入php self与$this的详解
Jun 08 PHP
CodeIgniter实现更改view文件夹路径的方法
Jul 04 PHP
ThinkPHP有变量的where条件分页实例
Nov 03 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
Feb 26 PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
Jan 21 PHP
php fread函数使用方法总结
May 28 PHP
mysqli扩展无法在PHP7下升级问题的解决
Sep 10 PHP
PHP SESSION跨页面传递失败解决方案
Dec 11 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
snoopy PHP版的网络客户端提供本地下载
2008/04/15 PHP
php 调试利器debug_print_backtrace()
2012/07/23 PHP
windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
2014/01/14 PHP
destoon实现调用图文新闻的方法
2014/08/21 PHP
通过php添加xml文档内容的方法
2015/01/23 PHP
PHP vsprintf()函数格式化字符串操作原理解析
2020/07/14 PHP
jQuery中判断一个元素是否为另一个元素的子元素(或者其本身)
2012/03/21 Javascript
JS正则验证邮箱的格式详细介绍
2013/11/19 Javascript
jquery对ajax的支持介绍
2013/12/10 Javascript
JSONP跨域的原理解析及其实现介绍
2014/03/22 Javascript
通过sails和阿里大于实现短信验证
2017/01/04 Javascript
基于jquery实现九宫格拼图小游戏
2018/11/30 jQuery
微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解析
2019/08/16 Javascript
Javascript和jquery在selenium的使用过程
2019/10/31 jQuery
原生JS与JQ获取元素的区别详解
2020/02/13 Javascript
[49:15]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第二场 1月19日
2021/03/11 DOTA
Python入门之modf()方法的使用
2015/05/15 Python
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
对Python3 goto 语句的使用方法详解
2019/02/16 Python
Python二进制文件读取并转换为浮点数详解
2019/06/25 Python
Python类中的魔法方法之 __slots__原理解析
2019/08/26 Python
Python拼接字符串的7种方式详解
2020/03/19 Python
使用Canvas操作像素的方法
2018/06/14 HTML / CSS
编写类String的构造函数、析构函数和赋值函数
2012/05/29 面试题
纠风工作实施方案
2014/03/15 职场文书
《长征》教学反思
2014/04/27 职场文书
电台编导求职信
2014/05/06 职场文书
地下停车场租赁协议范本
2014/10/07 职场文书
领导走群众路线整改措施思想汇报
2014/10/12 职场文书
五一劳动节活动总结
2015/02/09 职场文书
逃出克隆岛观后感
2015/06/09 职场文书
百年校庆感言
2015/08/01 职场文书
那些美到让人窒息的诗句,值得你收藏!
2019/08/20 职场文书
关于CSS自定义属性与前端页面的主题切换问题
2022/03/21 HTML / CSS
《现实主义勇者的王国再建记》第三弹OST全曲试听片段公开
2022/04/04 日漫
Python进程池与进程锁之语法学习
2022/04/11 Python