php中preg_match过滤URL非法参数程序
PHP开发中经常用到URL传递参数,对传递的参数要进行安全过滤,过滤URL中非法参数,这是php安全的一个细小的地方,却事关安全的大事。URL参数一般都是数字或者字母加上”-“或者”_”组成,参数带有其他的符号的都要进行过滤,以免带来安全问题。对URL传参进行非法字符过滤,用preg_match很容易判断非法的参数。
代码如下 | 复制代码 |
if(!preg_match("/^[a-z0-9_\-]+$/i",$this->commentid)) |
这里$this->commentid就是从URL中$_GET方式传递过来的参数,接收URL$_GET方式传递的参数的时候也要进行处理,如:
代码如下 | 复制代码 |
$this->commentid = isset($_GET['commentid']) && trim(urldecode($_GET['commentid'])) ? trim(urldecode($_GET['commentid'])) : $this->_show_msg(L('illegal_parameters')); |
PHP开发安全问题不容忽视,这些很细小的问题很简单就可以处理,但是容易倏忽。很多的漏洞都是从这里找到的。
正则过滤就是利用preg_replace执行替换指定的内容或进行preg_macth进行匹配进行判断,两种效果差不多我们来介绍前者。非法的汉字会影响到显示甚至程序的执行,会出现一些意想不到的结果。所以我们需要过滤这些非法的汉字或字符。
代码如下
代码如下 | 复制代码 |
function normalizeText($text, $length = null) |
很多时候我们正则清除HTML标签但总希望保留其中一部分标签
用asp语言实现
代码如下 | 复制代码 |
str="<a href=""a.htm"">a.htm</a><div>afefe</div>feaa<b>bbb</b> <a href=http://www.111cn.net id=""ggg"">ggg</a><abbr>测试</abbr>" Set re=new RegExp re.IgnoreCase =true re.Global=True re.Pattern="(<(?!/?(a|p|b)(\s|>))[^>]*>)" str=re.replace(str," ") response.Write str |
那正则也可以用在其他语言里实现里实现
用php语言实现如下:
代码如下 | 复制代码 |
|
当然php有更简单的实现方法:
代码如下 | 复制代码 |
$str='<a href="a.htm">a.htm</a><div>afefe</div>feaa<b>bbb</b |
或者这样写
代码如下 | 复制代码 |
/** |
如果在你的程序中收到这样的字符串:
代码如下 | 复制代码 |
<ReportList><ordIndex>1</ordIndex><ordLabNo>1942268</ordLabNo><arcItemId>134</arcItemId><ordItemDesc>产品1</ordItemDesc><Status>执行</Status><ordDate>2013-08-12</ordDate><reportStatus>报告已出</reportStatus><reportException>0</reportException></ReportList><ReportList><ordIndex>2</ordIndex><ordLabNo>19434368</ordLabNo><arcItemId>135</arcItemId><ordItemDesc>产品2</ordItemDesc><Status>执行</Status><ordDate>2013-05-12</ordDate><reportStatus>报告未出</reportStatus><reportException>0</reportException></ReportList> |
那么,恭喜你,php中我们常用的几种方法
都不会生效,如:
代码如下 | 复制代码 |
$array = (array)new SimpleXMLElement($xml_str); |
所以我们只能自己写个方法喽
代码如下:
代码如下 | 复制代码 |
function parse_xml_to_array($xmlstr,$loopTag){ $args = explode('</'.$loopTag.'>',$xmlstr); $returns = array(); if($args){ $reg = '/<(\w+)[^>]*>([\x00-\xFF]*)<\/\1>/'; foreach($args as $item){ $item = str_replace('<'.$loopTag.'>','',$item); if(preg_match_all($reg, $item, $matches)) { if(isset($matches[1]) && isset($matches[2])){ $returns[] = array_combine($matches[1],$matches[2]); } } } } unset($args); return $returns; } $arr = parse_xml_to_array($xml,'ReportList'); var_dump($arr); |
继续浏览有关 的文章
今天在做一个功能时因为以前我们填写的内容中有数字与中文了,但现在改版了只要数字了,使用intval函数发现如果开头不是数字就是0了,所以只有使用正则了,下面来看过程。在网上搜索到这个测试一下发现还可以,但是如果字符长度不d{4} 不定长就不行了
代码如下 | 复制代码 |
function findNum($str=''){ |
后来又发现知道中有一个
代码如下 | 复制代码 |
$str=trim($str); |
发现这个可以获取任意连续长度的数字了,当然在网上还看到很多,但有一个可以了所以就没有再测试了。
相关文章
- 这篇文章主要介绍了C#开发Windows窗体应用程序的简单操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-12
- 本文通过例子,讲述了C++调用C#的DLL程序的方法,作出了以下总结,下面就让我们一起来学习吧。...2020-06-25
- 这篇文章主要介绍了cmd下过滤文件名称的两种方法,需要的朋友可以参考下...2020-06-30
- 本文通过两个示例讲解了一下Process类调用外部应用程序的基本用法,并简单讲解了StartInfo属性,有需要的朋友可以参考一下。...2020-06-25
- 这篇文章主要介绍了微信小程序 页面传值详解的相关资料,需要的朋友可以参考下...2017-03-13
- 大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
- 这篇文章主要介绍了uniapp微信小程序:key失效的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-20
- 本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
将c#编写的程序打包成应用程序的实现步骤分享(安装,卸载) 图文
时常会写用c#一些程序,但如何将他们和photoshop一样的大型软件打成一个压缩包,以便于发布....2020-06-25- 这篇文章主要介绍了微信小程序 网络请求(GET请求)详解的相关资料,需要的朋友可以参考下...2016-11-22
- 这篇文章主要给大家介绍了关于微信小程序如何获取图片宽度与高度的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-10
- 这篇文章主要介绍了微信小程序 二维码生成工具 weapp-qrcode详解,教大家如何在项目中引入weapp-qrcode.js文件,通过实例代码给大家介绍的非常详细,需要的朋友可以参考下...2021-10-23
- 这篇文章主要为大家详细介绍了微信小程序自定义tabbar组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-03-14
- 这篇文章主要介绍了Python爬取微信小程序通用方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-09-29
- 这篇文章主要介绍了微信小程序手势操作之单触摸点与多触摸点的相关资料,需要的朋友可以参考下...2017-03-13
- 这篇文章主要介绍了微信小程序(应用号)开发新闻客户端实例的相关资料,需要的朋友可以参考下...2016-10-25
- 本文主要介绍了手把手教你uniapp和小程序分包,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-02
- 这篇文章主要为大家详细介绍了微信小程序实现canvas分享朋友圈海报,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-21
- 这篇文章主要介绍了微信小程序 页面跳转传递值几种方法详解的相关资料,需要的朋友可以参考下...2017-01-16
- 这篇文章主要为大家详细介绍了微信小程序实现选择地址省市区三级联动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-21