php防注入过滤客户提交$_GET 和$_POST参数
以下代码实现过滤php的$_GET 和$_POST参数
代码如下 | 复制代码 |
/** if (is_array($var)) { $var = filterHtml($var); } |
代码如下 | 复制代码 |
/用正则表达式(把脏话想替换成什么就替换成什么) $str = "aa=!!|bb=@@|cc=##|dd=$$|ee=%%|ff=^^|gg=&&"; $arr = explode('|',$str); foreach($arr as $key=>$val) { $array[] = explode('=',$val); } print_r($array); for($i=0;$i<count($array);$i++) { $a1[] = "/".$array[$i][0]."/"; $a2[] = $array[$i][1]; } unset($arr); $message= '呵呵 就是一个反社会的时代 WOCAO madE'; echo $message.'<br>'; print preg_replace($a1,$a2,$message); //支持参数个数组 但是参数区分大小写 <strong></strong> print eregi_replace($arr1,array('!!','@@','##','$$','%%','^^','&&'),$message); //不支持数组 但是参数 不区分大小写 |
<?php
代码如下 | 复制代码 |
$magic_quotes_gpc = get_magic_quotes_gpc(); @extract(daddslashes($_COOKIE)); @extract(daddslashes($_POST)); @extract(daddslashes($_GET)); if(!$magic_quotes_gpc) { $_FILES = daddslashes($_FILES); } |
daddslashes函数
代码如下 | 复制代码 |
//转译字符函数 |
?>
这个函数我想很多朋友都知道,黑客用得最多的一句了,可以解析php 代码并且运行哦,eval是函数不可在php中禁止,以前我就以为可以在php.ini禁止此函数,结果失败了。定义和用法
eval() 函数把字符串按照 PHP 代码来计算。
该字符串必须是合法的 PHP 代码,且必须以分号结尾。
如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。
语法
?eval(phpcode)
参数 描述
phpcode 必需。规定要计算的 PHP 代码。
提示和注释
注释:返回语句会立即终止对字符串的计算。
注释:该函数对于在数据库文本字段中供日后计算而进行的代码存储很有用。
例子
?
代码如下 | 复制代码 |
<?php $string = "beautiful"; $time = "winter"; $str = 'This is a $string $time morning!'; echo $str. "<br />"; eval("$str = "$str";"); echo $str; ?> |
输出:
代码如下 | 复制代码 |
This is a $string $time morning! This is a beautiful winter morning! |
--------------------------------------------------------------------------------
eval() 函数在CodeIgniter框架里也有用到。在 /system/database/DB.php 文件中,根据系统的配置动态的定义了一个类 CI_DB,具体代码片段如下:?
代码如下 | 复制代码 |
if ( ! isset($active_record) OR $active_record == TRUE) { require_once(BASEPATH.'database/DB_active_rec.php'); if ( ! class_exists('CI_DB')) { eval('class CI_DB extends CI_DB_active_record { }'); } } else { if ( ! class_exists('CI_DB')) { eval('class CI_DB extends CI_DB_driver { }'); } } require_once(BASEPATH.'database/drivers/'.$params['dbdriver'].'/'.$params['dbdriver'].'_driver.php'); // Instantiate the DB adapter $driver = 'CI_DB_'.$params['dbdriver'].'_driver'; $DB = new $driver($params); |
本函式可将字符串之中的变量值代入,通常用在处理数据库的数据上。参数 code_str 为欲处理的字符串。值得注意的是待处理的字符串要符合 PHP 的字符串格式,同时在结尾处要有分号。使用本函式处理后的字符串会沿续到 PHP 程序结束。
本文章介绍了用户自定义的addslashes函数,他可以自动过滤,post,get过来的非法数据哦。代码如下 | 复制代码 |
@set_magic_quotes_runtime(0); $MQG = get_magic_quotes_gpc(); if(!$MQG && $_POST) $_POST = daddslashes($_POST); if(!$MQG && $_GET) $_GET = daddslashes($_GET); //转译字符函数 function daddslashes($string) { if(!is_array($string)) return addslashes($string); foreach($string as $key => $val) $string[$key] = daddslashes($val); return $string; } |
相关文章
- 这篇文章主要介绍了cmd下过滤文件名称的两种方法,需要的朋友可以参考下...2020-06-30
- artDialog是一个基于javascript编写的对话框组件,它拥有精致的界面与友好的接口。本文给大家介绍JS中artdialog弹出框控件之提交表单思路详解,对本文感兴趣的朋友一起学习吧...2016-04-19
- 这篇文章主要介绍了vue项目,代码提交至码云,iconfont的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-30
- 这篇文章主要介绍了angularjs $http实现form表单提交示例,非常具有实用价值,需要的朋友可以参考下 ...2017-06-15
- 在html表单提交中method请求Get和Post区别其实很显示的,get提交会是url形式的并且数据量不能太多,而post数据是在浏览器url看不到的并且可以是大数据量而且get安全性非...2016-09-20
- 这篇文章主要介绍了基于Postgresql 事务的提交与回滚解析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-18
- 这篇文章主要介绍了PHP正则表达式过滤html标签属性的相关内容,实用性非常,感兴趣的朋友参考下吧...2016-05-06
- 这篇文章主要介绍了JavaScript过滤字符串中的中文与空格方法汇总 的相关资料,需要的朋友可以参考下...2016-03-09
简述JavaScript提交表单的方式 (Using JavaScript Submit Form)
这篇文章主要介绍了简述JavaScript提交表单的方式 (Using JavaScript Submit Form)的相关资料,需要的朋友可以参考下...2016-03-22- 方法一过滤html自定义函数 代码如下 复制代码 function ihtmlspecialchars($string) { if(is_array($string)) { foreach($string as $key =>...2016-11-25
- 有时我们提交页面编码为gb2312但是接受的php页面的编码为uft8这样如果我们直接这样提交过去,肯定是出现乱码了,那么我们可以在提交表单时设置提交数据编码即可解决。...2016-09-20
- 这篇文章主要介绍了javascript中from 表单序列化提交的实现方法,代码简单易懂,非常不错,需要的朋友参考下吧...2017-01-23
- 很多人可能都会遇到在调试的时候用了return了false,可为什么还会提交呢?这个问题我最近也碰到了,尝试了多次也没有用,后来终于发现了其中的问题,下面分享处理给大家,让同样遇到这个问题的朋友们能够看看,有需要的朋友们下面来一起看看吧。...2016-10-20
- 这篇文章主要介绍了SpringMVC表单提交参数400错误解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-10-21
- 本文章来给大家介绍一个入门教程关于PHP表单提交数据之get,post实例,有需要了解的同学可进入参考参考。 1.什么是表单 所谓表单,说简单点就是一对form标签。即:<form...2016-11-25
- C# 撒列实现关键字过滤的实例,需要的朋友可以参考一下...2020-06-25
php curl中x-www-form-urlencoded与multipart/form-data 方式 Post 提交数据详解
下面我们一起来看一篇关于php 中x-www-form-urlencoded与multipart/form-data 方式 Post 提交数据详解,希望文章能够对各位有所帮助哦。 multipart/form-data 方式...2016-11-25- 本文简单介绍如何防止外部恶意调用ajax接口,以达到节省流量,减轻服务器压力的目的。...2016-04-15
- 本文章来给大家介绍一个利用PHP CURL模拟POST提交XML数据,因为接受方只接受xml数据所以我就写了一个,下面分享给各位朋友,有需要的朋友可参考。 代码如下 ...2016-11-25
- 这篇文章主要介绍了jQuery实现订单提交页发送短信功能前端处理方法,涉及jQuery响应鼠标事件及针对页面元素的样式与字符串正则操作相关技巧,需要的朋友可以参考下...2016-07-06