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 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
Oct 09 PHP
使用 php4 加速 web 传输
Oct 09 PHP
教你如何使用php session
Oct 28 PHP
两种设置php载入页面时编码的方法
Jul 29 PHP
Codeigniter(CI)框架分页函数及相关知识
Nov 03 PHP
PHP数组操作类实例
Jul 11 PHP
PHP中常见的缓存技术实例分析
Sep 23 PHP
优化WordPress的Google字体以加速国内服务器上的运行
Nov 24 PHP
深入讲解PHP的Yii框架中的属性(Property)
Mar 18 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
May 20 PHP
基于PHP实现数据分页显示功能
May 26 PHP
Laravel实现autoload方法详解
May 07 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教程-第一天
2007/03/18 PHP
php flush类输出缓冲剖析
2008/10/19 PHP
php在线代理转向代码
2012/05/05 PHP
php中get_headers函数的作用及用法的详细介绍
2013/04/27 PHP
PHP生成随机密码类分享
2014/06/25 PHP
PHP开发框架laravel安装与配置教程
2015/03/13 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
2015/11/10 PHP
示例详解Laravel的注册重构
2016/08/14 PHP
JavaScript中链式调用之研习
2011/04/07 Javascript
autoPlay 基于jquery的图片自动播放效果
2011/12/07 Javascript
IE6下opacity与JQuery的奇妙结合
2013/03/01 Javascript
js绑定事件this指向发生改变的问题解决方法
2013/04/23 Javascript
动态加载脚本提升javascript性能
2014/02/24 Javascript
用console.table()调试javascript
2014/09/04 Javascript
dreamweaver 8实现Jquery自动提示
2014/12/04 Javascript
8个超实用的jQuery功能代码分享
2015/01/08 Javascript
jquery mobile开发常见问题分析
2016/01/21 Javascript
原生js编写autoComplete插件
2016/04/13 Javascript
移动端js触摸事件详解
2016/09/18 Javascript
微信小程序 animation API详解及实例代码
2016/10/08 Javascript
在vue项目中引入vue-beauty操作方法
2019/02/11 Javascript
Vue 根据条件判断van-tab的显示方式
2020/08/03 Javascript
python实现寻找最长回文子序列的方法
2018/06/02 Python
python:按行读入,排序然后输出的方法
2019/07/20 Python
pandas如何处理缺失值
2019/07/31 Python
将labelme格式数据转化为标准的coco数据集格式方式
2020/02/17 Python
PyCharm取消波浪线、下划线和中划线的实现
2020/03/03 Python
详解Python中openpyxl模块基本用法
2021/02/23 Python
如何用H5实现一个触屏版的轮播器的实例
2017/01/09 HTML / CSS
Scholastic父母商店:儿童书籍
2017/01/01 全球购物
const和static readonly区别
2013/05/20 面试题
30年同学聚会感言
2014/01/30 职场文书
重阳节演讲稿:尊敬帮助老人 弘扬传统美德
2014/09/25 职场文书
2015共产党员公开承诺书
2015/01/22 职场文书
python 如何做一个识别率百分百的OCR
2021/05/29 Python
SQL Server中T-SQL标识符介绍与无排序生成序号的方法
2022/05/25 SQL Server