您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息

php 参数过滤、数据过滤详解_php实例

2024/4/20 16:37:08发布4次查看
下面通过一段代码给大家介绍php参数过滤
class mysafe{ public $logname; public $isshwomsg; function __construct(){ set_error_handler('myerror',e_all); //----- } function myerror($errno, $errstr, $errfile, $errline){ echo error number: [$errno],error on line $errline in $errfile
; exit; } function wlog($logs){ if(empty($logname)){ $this->logname=$_server[document_root]./log.htm; } $ts=fopen($this->logname,a+); fputs($ts,$logs.\r\n); fclose($ts); } function showmsg($msg='',$flag=false){ $this->isshwomsg=empty($this->isshwomsg) ? false : true; if ($this->isshwomsg) { echo '
--------------------------------------
'; echo $msg; echo '
--------------------------------------
'; if ($flag) exit; } } function get_filter(){ $getfilter='|(and|or)\\b.+?(>|stopattack($key,$value,$getfilter); } } function post_filter(){ $postfilter=\\b(and|or)\\b.{1,6}?(=|>|stopattack($key,$value,$postfilter); } } function cookie_filter(){ $cookiefilter=\\b(and|or)\\b.{1,6}?(=|>|stopattack($key,$value,$cookiefilter); } } //过滤参数 function stopattack($strfiltkey,$strfiltvalue,$arrfiltreq){ if(is_array($strfiltvalue)){ $strfiltvalue=implode($strfiltvalue); } if (preg_match(/.$arrfiltreq./is,$strfiltvalue)==1){ $msg=
操作ip: .$_server[remote_addr].
操作时间: .strftime(%y-%m-%d %h:%m:%s).
操作页面:.$_server[php_self].
提交方式: .$_server[request_method].
提交参数: .$strfiltkey.
提交数据: .$strfiltvalue; $this->wlog($msg); $this->showmsg($msg); exit(); } } function filter_value_for_sql($str){ $str = str_replace(and,,$str); $str = str_replace(execute,,$str); $str = str_replace(update,,$str); $str = str_replace(count,,$str); $str = str_replace(chr,,$str); $str = str_replace(mid,,$str); $str = str_replace(master,,$str); $str = str_replace(truncate,,$str); $str = str_replace(char,,$str); $str = str_replace(declare,,$str); $str = str_replace(select,,$str); $str = str_replace(create,,$str); $str = str_replace(delete,,$str); $str = str_replace(insert,,$str); $str = str_replace(',,$str); $str = str_replace('',,$str); $str = str_replace( ,,$str); $str = str_replace(or,,$str); $str = str_replace(=,,$str); $str = str_replace( ,,$str); return $str; } //class end}
下面给大家介绍下php数据过滤
1、php提交数据过滤的基本原则
1)提交变量进数据库时,我们必须使用addslashes()进行过滤,像我们的注入问题,一个addslashes()也就搞定了。其实在涉及到变量取值时,intval()函数对字符串的过滤也是个不错的选择。
2)在php.ini中开启magic_quotes_gpc和magic_quotes_runtime。magic_quotes_gpc可以把get,post,cookie里的引号变为斜杠。magic_quotes_runtime对于进出数据库的数据可以起到格式话的作用。其实,早在以前注入很疯狂时,这个参数就很流行了。
3)在使用系统函数时,必须使用escapeshellarg(),escapeshellcmd()参数去过滤,这样你也就可以放心的使用系统函数。
4)对于跨站,strip_tags(),htmlspecialchars()两个参数都不错,对于用户提交的的带有html和php的标记都将进行转换。比如尖括号$new = htmlspecialchars(test, ent_quotes);
strip_tags($text,);
5)对于相关函数的过滤,就像先前的include(),unlink,fopen()等等,只要你把你所要执行操作的变量指定好或者对相关字符过滤严密,我想这样也就无懈可击了。
2、php简单的数据过滤
1)入库:  trim($str),addslashes($str)
2)出库:  stripslashes($str)
3)显示:  htmlspecialchars(nl2br($str))
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录