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 相关文章推荐
BBS(php &amp; mysql)完整版(三)
Oct 09 PHP
PHP实现用户认证及管理完全源码
Mar 11 PHP
php auth_http类库进行身份效验
Mar 19 PHP
php设计模式 Facade(外观模式)
Jun 26 PHP
基于initPHP的框架介绍
Apr 18 PHP
PHP中使用addslashes函数转义的安全性原理分析
Nov 03 PHP
php中smarty实现多模版网站的方法
Jun 11 PHP
php搜索文件程序分享
Oct 30 PHP
PHP批量去除BOM头内容信息代码
Mar 11 PHP
php有效防止图片盗用、盗链的两种方法
Nov 01 PHP
YII2框架中使用yii.js实现的post请求
Apr 09 PHP
Codeigniter里的无刷新上传的实现代码
Apr 14 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下通过POST还是GET来传值
2008/06/05 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
newxtree.js代码
2007/03/13 Javascript
50款非常棒的 jQuery 插件分享
2012/03/29 Javascript
JavaScript NodeTree导航栏(菜单项JSON类型/自制)
2013/02/01 Javascript
Jquery实现控件的隐藏和显示实例
2014/02/08 Javascript
$(document).ready(function() {})不执行初始化脚本
2014/06/19 Javascript
javascript实现控制div颜色
2015/07/07 Javascript
基于jQuery实现收缩展开功能
2016/03/18 Javascript
JS判断日期格式是否合法的简单实例
2016/07/11 Javascript
全面了解addEventListener和on的区别
2016/07/14 Javascript
Vue.js绑定HTML class数组语法错误的原因分析
2016/10/19 Javascript
jQuery+Ajax实现用户名重名实时检测
2017/06/01 jQuery
jQuery正则验证注册页面经典实例
2017/06/10 jQuery
Node.js 8 中的重要新特性
2017/06/28 Javascript
微信小程序页面缩放式侧滑效果的实现代码
2018/11/15 Javascript
jQuery中实现text()的方法
2019/04/04 jQuery
微信小程序API—获取定位的详解
2019/04/30 Javascript
uni-app如何实现增量更新功能
2020/01/03 Javascript
JavaScript用document.write()输出换行的示例代码
2020/11/26 Javascript
Python的Django框架安装全攻略
2015/07/15 Python
python生成器表达式和列表解析
2016/03/10 Python
hmac模块生成加入了密钥的消息摘要详解
2018/01/11 Python
tensorflow构建BP神经网络的方法
2018/03/12 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
2019/01/29 Python
python字符串常用方法及文件简单读写的操作方法
2020/03/04 Python
python 的topk算法实例
2020/04/02 Python
CSS3教程(8):CSS3透明度指南
2009/04/02 HTML / CSS
新东方旗下远程教育网站:新东方在线
2020/03/19 全球购物
SQL中where和having的区别
2012/06/17 面试题
js实现弹框效果
2021/03/24 Javascript
学生爱国演讲稿
2014/01/14 职场文书
监察建议书格式
2014/05/19 职场文书
告知书格式
2015/07/01 职场文书
商业计划书如何写?关键问题有哪些?
2019/07/11 职场文书
在Django中使用MQTT的方法
2021/05/10 Python