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设计模式中单例模式的应用分析
May 15 PHP
php 深入理解strtotime函数的使用详解
May 23 PHP
使用迭代器 遍历文件信息的详解
Jun 08 PHP
如何取得中文字符串中出现次数最多的子串
Aug 08 PHP
PHP获取短链接跳转后的真实地址和响应头信息的方法
Jul 25 PHP
php实现有趣的人品测试程序实例
Jun 08 PHP
PHP中两个float(浮点数)比较实例分析
Sep 27 PHP
PHP+MySQL实现无极限分类栏目的方法
Dec 23 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
Jun 13 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
Jun 13 PHP
php workerman定时任务的实现代码
Dec 23 PHP
php和vue配合使用技巧和方法
May 09 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 和 MySQL 开发的 8 个技巧
2006/10/09 PHP
PHP开发中常用的字符串操作函数
2011/02/08 PHP
PHP中使用crypt()实现用户身份验证的代码
2012/09/05 PHP
用js查找法实现当前栏目的高亮显示的代码
2007/11/24 Javascript
jQuery实现在最后一个元素之前插入新元素的方法
2015/07/18 Javascript
jquery中ajax跨域方法实例分析
2015/12/18 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
javascript的document中的动态添加标签实现方法
2016/10/24 Javascript
angular4自定义表单控件[(ngModel)]的实现
2018/11/23 Javascript
vue中的inject学习教程
2019/04/24 Javascript
js贪心算法 钱币找零问题代码实例
2019/09/11 Javascript
layer弹出层倒计时关闭的实现方法
2019/09/27 Javascript
[09:47]2018DOTA2亚洲邀请赛4.5SOLO赛 No[o]ne vs Sumail
2018/04/06 DOTA
python实现一次创建多级目录的方法
2015/05/15 Python
利用Python爬取可用的代理IP
2016/08/18 Python
Python实现螺旋矩阵的填充算法示例
2017/12/28 Python
python十进制和二进制的转换方法(含浮点数)
2018/07/07 Python
numpy ndarray 按条件筛选数组,关联筛选的例子
2019/11/26 Python
TensorFlow基本的常量、变量和运算操作详解
2020/02/03 Python
css3的图形3d翻转效果应用示例
2014/04/08 HTML / CSS
viagogo意大利票务平台:演唱会、体育比赛、戏剧门票
2018/01/26 全球购物
伦敦的高级牛仔布专家:Trilogy
2018/08/06 全球购物
Tirendo比利时:在线购买轮胎
2018/10/22 全球购物
中学生打架检讨书
2014/02/10 职场文书
《难忘的泼水节》教学反思
2014/02/27 职场文书
恶搞卫生巾广告词
2014/03/18 职场文书
公务员更新知识培训实施方案
2014/03/31 职场文书
党务公开方案
2014/05/06 职场文书
学前教育专业求职信
2014/09/02 职场文书
投诉书格式范本
2015/07/02 职场文书
手把手教你怎么用Python实现zip文件密码的破解
2021/05/27 Python
html实现弹窗的实例
2021/06/09 HTML / CSS
天谕手游15杯全调酒配方和调酒券的获得方式
2022/04/06 其他游戏
vue项目打包后路由错误的解决方法
2022/04/13 Vue.js
pandas中pd.groupby()的用法详解
2022/06/16 Python
VUE递归树形实现多级列表
2022/07/15 Vue.js