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 相关文章推荐
source.php查看源文件
Dec 09 PHP
兼容PHP5的PHP目录管理函数库
Jul 10 PHP
php 获取当前访问的url文件名的方法小结
Feb 08 PHP
php中global和$GLOBALS[]的分析之一
Feb 02 PHP
PHP中去掉字符串首尾空格的方法
May 19 PHP
PHP计算2点经纬度之间的距离代码
Aug 12 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
Jun 23 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
Oct 28 PHP
yii2中LinkPager增加总页数和总记录数的实例
Aug 28 PHP
thinkPHP3.2.3结合Laypage实现的分页功能示例
May 28 PHP
PHP封装的非对称加密RSA算法示例
May 28 PHP
php 多继承的几种常见实现方法示例
Nov 18 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
Javascript 继承机制的实现
2009/08/12 Javascript
jquery select选中的一个小问题
2009/10/11 Javascript
JavaScript 事件冒泡简介及应用
2010/01/11 Javascript
javascript sudoku 数独智力游戏生成代码
2010/03/27 Javascript
juqery 学习之五 文档处理 包裹、替换、删除、复制
2011/02/11 Javascript
JS 无限级 Select效果实现代码(json格式)
2011/08/30 Javascript
javascript实现playfair和hill密码算法
2014/12/07 Javascript
JavaScript电子时钟倒计时第二款
2016/01/10 Javascript
JS控制弹出悬浮窗口(一览画面)的实例代码
2016/05/30 Javascript
knockoutjs动态加载外部的file作为component中的template数据源的实现方法
2016/09/01 Javascript
微信小程序 教程之模板
2016/10/18 Javascript
js解决软键盘遮挡输入框的问题分享
2017/12/19 Javascript
通过实践编写优雅的JavaScript代码
2019/05/30 Javascript
ES6 Object方法扩展的应用实例分析
2019/06/25 Javascript
JavaScript实现的开关灯泡点击切换特效示例
2019/07/08 Javascript
详细分析vue表单数据的绑定
2020/07/20 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
2020/07/29 Javascript
js+canvas实现五子棋小游戏
2020/08/02 Javascript
vue中选中多个选项并且改变选中的样式的实例代码
2020/09/16 Javascript
Python3.x和Python2.x的区别介绍
2013/02/12 Python
Python中的__new__与__init__魔术方法理解笔记
2014/11/08 Python
Python简单定义与使用二叉树示例
2018/05/11 Python
Python 爬取携程所有机票的实例代码
2018/06/11 Python
python解析xml简单示例
2019/06/21 Python
pandas中的ExcelWriter和ExcelFile的实现方法
2020/04/24 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
2020/04/27 Python
python利用tkinter实现图片格式转换的示例
2020/09/28 Python
纯CSS实现的大小渐变、渐远效果
2014/04/15 HTML / CSS
详解如何通过H5(浏览器/WebView/其他)唤起本地app
2017/12/11 HTML / CSS
俄罗斯设计师家具购物网站:The Furnish
2019/12/01 全球购物
美国一家著名的手表在线折扣网站:Discount Watch Store
2020/02/24 全球购物
工商管理应届生求职信
2013/10/07 职场文书
冰淇淋店的创业计划书
2014/02/07 职场文书
治理商业贿赂工作总结
2015/08/10 职场文书
golang DNS服务器的简单实现操作
2021/04/30 Golang
纯html+css实现奥运五环的示例代码
2021/08/02 HTML / CSS