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 相关文章推荐
无限级别菜单的实现
Oct 09 PHP
php全排列递归算法代码
Oct 09 PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
Aug 08 PHP
PHP添加Xdebug扩展的方法
Feb 12 PHP
使用Discuz关键词服务器实现PHP中文分词
Mar 11 PHP
php的mkdir()函数创建文件夹比较安全的权限设置方法
Jul 28 PHP
php中Socket创建与监听实现方法
Jan 05 PHP
PHP获取photoshop写入图片文字信息的方法
Mar 31 PHP
php ci 获取表单中多个同名input元素值的代码
Mar 25 PHP
ThinkPHP中where()使用方法详解
Apr 19 PHP
php数组函数array_walk用法示例
May 26 PHP
学习PHP Cookie处理函数
Aug 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
Joomla下利用configuration.php存储简单数据
2010/05/19 PHP
php curl基本操作详解
2013/07/23 PHP
通过源码解析Laravel的依赖注入
2018/01/22 PHP
通过jquery实现tab标签浏览效果
2007/02/20 Javascript
javascript基本语法分析说明
2008/06/15 Javascript
JavaScript 版本自动生成文章摘要
2008/07/23 Javascript
基于JQuery的日期联动实现代码
2011/02/24 Javascript
capacityFixed 基于jquery的类似于新浪微博新消息提示的定位框
2011/05/24 Javascript
javascript获取作用在元素上面的样式属性代码
2012/09/20 Javascript
extjs两个tbar问题探讨
2013/08/08 Javascript
js日期联动示例
2014/05/02 Javascript
Egret引擎开发指南之编译项目
2014/09/03 Javascript
jQuery解决浏览器兼容性问题案例分析
2016/04/15 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
vue.js数据绑定的方法(单向、双向和一次性绑定)
2017/07/13 Javascript
利用Three.js如何实现阴影效果实例代码
2017/09/26 Javascript
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
2018/01/18 jQuery
javascript闭包的使用之按钮切换功能
2018/08/30 Javascript
使用 Node.js 实现图片的动态裁切及算法实例代码详解
2018/09/29 Javascript
详解Vue项目部署遇到的问题及解决方案
2019/01/11 Javascript
webpack 如何解析代码模块路径的实现
2019/09/04 Javascript
Python开发WebService系列教程之REST,web.py,eurasia,Django
2014/06/30 Python
Python实现针对中文排序的方法
2017/05/09 Python
Python进阶之递归函数的用法及其示例
2018/01/31 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
2018/05/05 Python
Django单元测试工具test client使用详解
2019/08/02 Python
使用python实现时间序列白噪声检验方式
2020/06/03 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
Canvas波浪花环的示例代码
2020/08/21 HTML / CSS
Famous Footwear加拿大:美国多品牌运动休闲鞋店
2018/12/05 全球购物
Public Desire美国/加拿大:全球性的在线鞋类品牌
2018/12/17 全球购物
计算机应届毕业生自荐信范文
2014/02/23 职场文书
五好关工委申报材料
2014/05/31 职场文书
企业与个人合作经营协议书
2014/11/01 职场文书
小班下学期个人总结
2015/02/12 职场文书
2015年七年级班主任工作总结
2015/05/21 职场文书