三、遍历关键字数组,sql 注入 字符的检测

作者:澳门娱乐

 代码如下

思路:
一、把第一字非常写在叁个文件文件里,每行二个,数量不限,有稍许写多少。
二、PHP读取关键字文书,存入三个数组
三、遍历关键字数组,挨个用strpos函数去看看内容有未有关键字,假如有,再次回到true,未有则赶回false

<?php
/*sql 注入 字符的检验
* 在有着顾客输入的数据,post传参, get传参 都亟待检查测试下 
* 如若有合营到主要字 则 重回该重大字  不然赶回false
* 那个和灵活字符的质量评定不是同一的
*/
function Filter_SQL($strData)
{
 $strFilter=$blnFlag=$arrayFilter='';

PHP代码如下:

 $strFilter="'|and|(|)|exec|insert|select|delete|update|count|*|%27|chr|mid|master|truncate|char|declare|union|or"; //须求过滤的字符,能够自身添,"|"是分隔符
 $blnFlag=false;   //过滤标志,如果发生过滤,那么就是真
 
 $arr=explode("|",$strFilter); 
 $str="";
 
 foreach($arr as $row)
 {
  $str.=preg_quote($row)."|";
 } 
 
 $str=trim($str,"|"); 
 
 if(preg_match('/'.$str.'/i',$strData,$word))
 {
  return $word[0];
 }
 
 return false;
}

 代码如下

/*
测试
$string="fasdf union ";
echo Filter_SQL($string);
*/

/* PHP中用strpos函数过滤关键字 */
// 关键字过滤函数
function keyWordCheck($content){
// 去除空白
$content = trim($content);
// 读取关键字文书
$content = @file_get_contents('keyWords.txt');
// 调换来数组
$arr = explode("n", $content);
// 遍历检查实验
for($i=0,$k=count($arr);$i<$k;$i++){
// 假如此数组成分为空则跳过本次巡回
if($arr[$i]==''){
continue;
}
// 若是检查测验到着重字,则赶回相称的机要字,并截至运维
if(@strpos($str,trim($arr[$i]))!==false){
//$i=$k;
return $arr[$i];
}
}
// 若无检查评定到重要字则赶回false
return false;
}
$content = '这里是要表露的文件内容。。。';
// 过滤关键字
$keyWord = keyWordCheck($content);
// 推断是或不是存在主要字
if($keyWord){
echo '你公布的剧情存在重视字'.$keyWord;
}else{
echo '恭喜!通过机要字检查评定';
// 往下能够举办写库操作达成揭露动作。
}

?>

事例2 (注:汉语关键字过滤时行使的主要性字文书为utf-8编码

 代码如下

/**
 * 被明确命令禁止的基本点字检查评定
 *
 * @param string $string  要检验的字符串
 * @param string $fileName 屏蔽关键字文书
 * @return bool
 */
function banwordCheck( $string, $fileName )
{
 if ( !($words = file_get_contents( $fileName )) ){
  die('file read error!');
 }
 $string = strtolower($string);
 $matched = preg_match('/'.$words.'/i', $string, $result);
 if ( $matched && isset($result[0]) && strlen($result[0]) > 0 )
 {
澳门娱乐6165,  if ( strlen($result[0]) == 2 ){
   $matched = preg_match('/'.$words.'/iu', $string, $result);
  } 
  if ( $matched && isset($result[0]) && strlen($result[0]) > 0 ) {
   return true;
  }else{
   return false;
  }  
 }else{
  return false;
 }
}

$content = '测量检验首要字';
if ( banwordCheck($content, './banwords.txt') ){
 echo "matched! ";
}else{
 echo "no match! ";
}

本文由澳门娱乐6165发布,转载请注明来源

关键词: