php 参数过滤、数据过滤详解
《:php 参数过滤、数据过滤详解》要点: PHP实例下面通过一段代码给大家介绍php参数过滤 PHP实例
class mysafe{
public $logname;
public $isshwomsg;
function __construct(){
set_error_handler('MyError',E_ALL);
//-----
}
function MyError($errno,$errstr,$errfile,$errline){
echo "<b>Error number:</b> [$errno],error on line $errline in $errfile<br />";
exit;
}
function wlog($logs){
if(empty($logname)){
$this->logname=$_SERVER["DOCUMENT_ROOT"]."/log.htm";
}
$Ts=fopen($this->logname,"a+");
fputs($Ts,$logs."rn");
fclose($Ts);
}
function showmsg($msg='',$flag=false){
$this->isshwomsg=empty($this->isshwomsg) ? false : true;
if ($this->isshwomsg) {
echo '<br />--------------------------------------<br />';
echo $msg;
echo '<br />--------------------------------------<br />';
if ($flag) exit;
}
}
function get_filter(){
$getfilter="'|(and|or)b.+?(>|<|=|in|like)|/*.+?*/|<s*scriptb|bEXECb|UNION.+?SELECT|UPDATE.+?SET|INSERTs+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)s+(TABLE|DATABASE)";
foreach($_GET as $key=>$value){
$this->StopAttack($key,$value,$getfilter);
}
}
function post_filter(){
$postfilter="b(and|or)b.{1,6}?(=|>|<|binb|blikeb)|/*.+?*/|<s*scriptb|bEXECb|UNION.+?SELECT|UPDATE.+?SET|INSERTs+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)s+(TABLE|DATABASE)";
foreach($_POST as $key=>$value){
$this->StopAttack($key,$postfilter);
}
}
function cookie_filter(){
$cookiefilter="b(and|or)b.{1,6}?(=|>|<|binb|blikeb)|/*.+?*/|<s*scriptb|bEXECb|UNION.+?SELECT|UPDATE.+?SET|INSERTs+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)s+(TABLE|DATABASE)";
foreach($_COOKIE as $key=>$value){
$this->StopAttack($key,$cookiefilter);
}
}
//过滤参数
function StopAttack($StrFiltKey,$StrFiltValue,$ArrFiltReq){
if(is_array($StrFiltValue)){
$StrFiltValue=implode($StrFiltValue);
}
if (preg_match("/".$ArrFiltReq."/is",$StrFiltValue)==1){
$msg="<br><br>操作IP: ".$_SERVER["REMOTE_ADDR"]."<br>操作时间: ".strftime("%Y-%m-%d %H:%M:%S")."<br>操作页面:".$_SERVER["PHP_SELF"]."<br>提交方式: ".$_SERVER["REQUEST_METHOD"]."<br>提交参数: ".$StrFiltKey."<br>提交数据: ".$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);
return $str;
}
//class end
}
PHP实例下面给大家介绍下PHP数据过滤 PHP实例1、php提交数据过滤的基本原则 PHP实例1)提交变量进数据库时,我们必须使用addslashes()进行过滤,像我们的注入问题,一个addslashes()也就搞定了.其实在涉及到变量取值时,intval()函数对字符串的过滤也是个不错的选择. PHP实例2、PHP简单的数据过滤 PHP实例1)入库:? trim($str),addslashes($str) 《:php 参数过滤、数据过滤详解》是否对您有启发,欢迎查看更多与《:php 参数过滤、数据过滤详解》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |