热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP安全检测代码片段

1**2*html转换输出(只转义保留Html正常运行)3*param$param4*returnstring5*6functionhtmlEscape($para

1 /**
2 * html转换输出(只转义' " 保留Html正常运行)
3 * @param $param
4 * @return string
5 */
6 function htmlEscape($param) {
7 return trim(htmlspecialchars($param, ENT_QUOTES));
8 }
9
10 /**
11 * 是否数组(同时检测数组中是否存在值)
12 * @param $params
13 * @return boolean
14 */
15 function isArray($params) {
16 return (!is_array($params) || !count($params)) ? false : true;
17 }
18
19 /**
20 * 变量是否在数组中存在(参数容错, 字符串是否存在于数组中)
21 * @param $param
22 * @param $params
23 * @return boolean
24 */
25 function inArray($param, $params) {
26 return (!in_array((string)$param, (array)$params)) ? false : true;
27 }
28
29 /**
30 * 通用多类型混合转义函数
31 * @param $var
32 * @param $strip
33 * @param $isArray
34 * @return mixture
35 */
36 function sqlEscape($var, $strip = true, $isArray = false) {
37 if (is_array($var)) {
38 if (!$isArray) return " '' ";
39 foreach ($var as $key => $value) {
40 $var[$key] = trim(S::sqlEscape($value, $strip));
41 }
42 return $var;
43 } elseif (is_numeric($var)) {
44 return " '" . $var . "' ";
45 } else {
46 return " '" . addslashes($strip ? stripslashes($var) : $var) . "' ";
47 }
48}
49
50 /**
51 * 获取服务器变量
52 * @param $keys
53 * @return string
54 */
55 function getServer($keys) {
56 $server = array();
57 $array = (array) $keys;
58 foreach ($array as $key) {
59 $server[$key] = NULL;
60 if (isset($_SERVER[$key])) {
61 $server[$key] &#61; str_replace(array(&#39;<&#39;,&#39;>&#39;,&#39;"&#39;,"&#39;",&#39;%3C&#39;,&#39;%3E&#39;,&#39;%22&#39;,&#39;%27&#39;,&#39;%3c&#39;,&#39;%3e&#39;), &#39;&#39;, $_SERVER[$key]);
62 }
63 }
64 return is_array($keys) ? $server : $server[$keys];
65 }
66
67 /**
68 * 变量转义
69 * &#64;param $array
70 */
71 function slashes(&$array) {
72 if (is_array($array)) {
73 foreach ($array as $key &#61;> $value) {
74 if (is_array($value)) {
75 S::slashes($array[$key]);
76 } else {
77 $array[$key] &#61; addslashes($value);
78 }
79 }
80 }
81 }
82
83 /**
84 * 目录转换
85 * &#64;param unknown_type $dir
86 * &#64;return string
87 */
88 function escapeDir($dir) {
89 $dir &#61; str_replace(array("&#39;",&#39;#&#39;,&#39;&#61;&#39;,&#39;&#96;&#39;,&#39;$&#39;,&#39;%&#39;,&#39;&&#39;,&#39;;&#39;), &#39;&#39;, $dir);
90 return rtrim(preg_replace(&#39;/(\/){2,}|(\\\){1,}/&#39;, &#39;/&#39;, $dir), &#39;/&#39;);
91 }
92 /**
93 * 通用多类型转换
94 * &#64;param $mixed
95 * &#64;param $isint
96 * &#64;param $istrim
97 * &#64;return mixture
98 */
99 function escapeChar($mixed, $isint &#61; false, $istrim &#61; false) {
100 if (is_array($mixed)) {
101 foreach ($mixed as $key &#61;> $value) {
102 $mixed[$key] &#61; S::escapeChar($value, $isint, $istrim);
103 }
104 } elseif ($isint) {
105 $mixed &#61; (int) $mixed;
106 } elseif (!is_numeric($mixed) && ($istrim ? $mixed &#61; trim($mixed) : $mixed) && $mixed) {
107 $mixed &#61; S::escapeStr($mixed);
108 }
109 return $mixed;
110 }
111 /**
112 * 字符转换
113 * &#64;param $string
114 * &#64;return string
115 */
116 function escapeStr($string) {
117 $string &#61; str_replace(array("\0","%00","\r"), &#39;&#39;, $string); //modified&#64;2010-7-5
118 $string &#61; preg_replace(array(&#39;/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F]/&#39;,&#39;/&(?!(#[0-9]&#43;|[a-z]&#43;);)/is&#39;), array(&#39;&#39;, &#39;&&#39;), $string);
119 $string &#61; str_replace(array("%3C",&#39;<&#39;), &#39;<&#39;, $string);
120 $string &#61; str_replace(array("%3E",&#39;>&#39;), &#39;>&#39;, $string);
121 $string &#61; str_replace(array(&#39;"&#39;,"&#39;","\t",&#39; &#39;), array(&#39;"&#39;,&#39;&#39;&#39;,&#39; &#39;,&#39;  &#39;), $string);
122 return $string;
123 }
124 /**
125 * 变量检查
126 * &#64;param $var
127 */
128 function checkVar(&$var) {
129 if (is_array($var)) {
130 foreach ($var as $key &#61;> $value) {
131 S::checkVar($var[$key]);
132 }
133 } elseif (P_W !&#61; &#39;admincp&#39;) {
134 $var &#61; str_replace(array(&#39;..&#39;,&#39;)&#39;,&#39;<&#39;,&#39;&#61;&#39;), array(&#39;&#46;&#46;&#39;,&#39;&#41;&#39;,&#39;<&#39;,&#39;&#61;&#39;), $var);
135 } elseif (str_replace(array(&#39;) !&#61; $var) {
136 global $basename;
137 $basename &#61; &#39;Javascript:history.go(-1);&#39;;
138 adminmsg(&#39;word_error&#39;);
139 }
140 }

 


转载于:https://www.cnblogs.com/liangle/p/3171063.html


推荐阅读
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了一种在PHP中对二维数组根据某个字段进行排序的方法,以年龄字段为例,按照倒序的方式进行排序,并给出了具体的代码实现。 ... [详细]
  • 渗透测试基础bypass绕过阻挡我们的WAF(下)
    渗透测试基础-bypass ... [详细]
  • Ihaveaforminadirectivetemplate:我在指令模板中有一个表单:<formn ... [详细]
  • PHP 如若要打开的文件名包含中文那么会报错
    后端开发|php教程nbsp,iconv,file,read,function后端开发-php教程PHP如果要打开的文件名包含中文那么会报错PHP如果要打开的文件名包含中文那么会报 ... [详细]
  • 1.{#if}{#if|COND|}..{#elseif|COND|}..{#else}..{#if}Examples:{#if2*816}good{#else}fa ... [详细]
author-avatar
我想去海边6_414
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有