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中使用PDF文档功能
Oct 09 PHP
用PHP控制用户的浏览器--ob*函数的使用说明
Mar 16 PHP
Fine Uploader文件上传组件应用介绍
Jan 06 PHP
php preg_replace替换实例讲解
Nov 04 PHP
CMS中PHP判断系统是否已经安装的方法示例
Jul 26 PHP
ThinkPHP入口文件设置及相关注意事项分析
Dec 05 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
Apr 03 PHP
十大使用PHP框架的理由
Sep 26 PHP
Smarty模板变量调节器用法分析
May 23 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
Jun 11 PHP
Laravel 对某一列进行筛选然后求和sum()的例子
Oct 10 PHP
PHP中多字节字符串操作实例详解
Aug 23 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
人工智能开始玩《星际争霸2》 你的操作跟得上吗?
2017/08/11 星际争霸
Linux下将excel数据导入到mssql数据库中的方法
2010/02/08 PHP
php字符串过滤strip_tags()函数用法实例分析
2019/06/24 PHP
如何用js控制css中的float的代码
2007/08/16 Javascript
javascript垃圾收集机制与内存泄漏详细解析
2013/11/11 Javascript
js中settimeout方法加参数的使用实例
2014/02/27 Javascript
两种不同的方法实现js对checkbox进行全选和反选
2014/05/13 Javascript
技术男用来对妹子表白的百度首页
2014/07/23 Javascript
Jquery树插件zTree用法入门教程
2015/02/17 Javascript
jQuery插件制作之全局函数用法实例
2015/06/01 Javascript
详解JavaScript的Polymer框架中的通知交互
2015/07/29 Javascript
jquery实现的蓝色二级导航条效果代码
2015/08/24 Javascript
Backbone.js框架中Model与Collection的使用实例
2016/05/07 Javascript
JQuery DIV 动态隐藏和显示的方法
2016/06/23 Javascript
jquery动态添加文本并获取值的方法
2016/10/12 Javascript
详解Angular调试技巧之报错404(not found)
2018/01/31 Javascript
推荐15个最好用的JavaScript代码压缩工具
2019/02/13 Javascript
Vue的data、computed、watch源码浅谈
2020/04/04 Javascript
[01:59]DOTA2首部纪录片《Free to play》预告片
2014/03/12 DOTA
[03:56]DOTA2完美大师赛趣味视频之小鸽子和Mineski打台球
2017/11/24 DOTA
详解Python多线程Selenium跨浏览器测试
2017/04/01 Python
python中pika模块问题的深入探究
2018/10/13 Python
Django数据库类库MySQLdb使用详解
2019/04/28 Python
Django中modelform组件实例用法总结
2020/02/10 Python
python中字符串的编码与解码详析
2020/12/03 Python
python os.listdir()乱码解决方案
2021/01/31 Python
受希腊女神灵感的晚礼服、鸡尾酒礼服和婚纱:THEIA
2018/04/15 全球购物
毕业生求职简历的自我评价
2013/10/07 职场文书
竞聘演讲稿
2014/04/24 职场文书
三分钟英语演讲稿
2014/04/24 职场文书
2015年计生协会工作总结
2015/04/24 职场文书
K8s部署发布Golang应用程序的实现方法
2021/07/16 Golang
关于nginx 实现jira反向代理的问题
2021/09/25 Servers
CSS font-variation 可变字体的魅力(实例详解)
2022/03/03 HTML / CSS
请求模块urllib之PYTHON爬虫的基本使用
2022/04/08 Python
Android开发之WECHAT微信小程序路由跳转的两种形式
2022/04/12 Java/Android