Heim  >  Artikel  >  Backend-Entwicklung  >  Beispielcode für die PHP-Sicherheitsfilterfunktion

Beispielcode für die PHP-Sicherheitsfilterfunktion

怪我咯
怪我咯Original
2017-07-07 09:44:521813Durchsuche

php 安全过滤函数代码,防止用户恶意输入内容。

 代码如下:

//安全过滤输入[jb] 
function check_str($string, $isurl = false) 
{ 
$string = preg_replace('/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F]/','',$string); 
$string = str_replace(array("\0","%00","\r"),'',$string); 
empty($isurl) && $string = preg_replace("/&(?!(#[0-9]+|[a-z]+);)/si",'&',$string); 
$string = str_replace(array("%3C",&#39;<&#39;),&#39;<&#39;,$string); 
$string = str_replace(array("%3E",&#39;>&#39;),&#39;>&#39;,$string); 
$string = str_replace(array(&#39;"&#39;,"&#39;","\t",&#39; &#39;),array(&#39;“&#39;,&#39;‘&#39;,&#39; &#39;,&#39; &#39;),$string); 
return trim($string); 
}

下面是为大家整理的一些过滤函数:

代码如下:

/**
* 安全过滤类-过滤javascript,css,iframes,object等不安全参数 过滤级别高
*  Controller中使用方法:$this->controller->fliter_script($value)
* @param  string $value 需要过滤的值
* @return string
*/
function fliter_script($value) {
$value = preg_replace("/(javascript:)?on(click|load|key|mouse|error|abort|move|unload|change|dblclick|move|reset|resize|submit)/i","&111n\\2",$value);
$value = preg_replace("/(.*?)<\/script>/si","",$value);
$value = preg_replace("/(.*?)<\/iframe>/si","",$value);
$value = preg_replace ("//iesU", &#39;&#39;, $value);
return $value;
}
/**
* 安全过滤类-过滤HTML标签
*  Controller中使用方法:$this->controller->fliter_html($value)
* @param  string $value 需要过滤的值
* @return string
*/
function fliter_html($value) {
if (function_exists(&#39;htmlspecialchars&#39;)) return htmlspecialchars($value);
return str_replace(array("&", &#39;"&#39;, "&#39;", "<", ">"), array("&", "\"", "&#39;", "<", ">"), $value);
}
/**
* 安全过滤类-对进入的数据加下划线 防止SQL注入
*  Controller中使用方法:$this->controller->fliter_sql($value)
* @param  string $value 需要过滤的值
* @return string
*/
function fliter_sql($value) {
$sql = array("select", &#39;insert&#39;, "update", "delete", "\&#39;", "\/\*", 
     "\.\.\/", "\.\/", "union", "into", "load_file", "outfile");
$sql_re = array("","","","","","","","","","","","");
return str_replace($sql, $sql_re, $value);
}
/**
* 安全过滤类-通用数据过滤
*  Controller中使用方法:$this->controller->fliter_escape($value)
* @param string $value 需要过滤的变量
* @return string|array
*/
function fliter_escape($value) {
if (is_array($value)) {
  foreach ($value as $k => $v) {
   $value[$k] = self::fliter_str($v);
  }
} else {
  $value = self::fliter_str($value);
}
return $value;
}
/**
* 安全过滤类-字符串过滤 过滤特殊有危害字符
*  Controller中使用方法:$this->controller->fliter_str($value)
* @param  string $value 需要过滤的值
* @return string
*/
function fliter_str($value) {
$badstr = array("\0", "%00", "\r", &#39;&&#39;, &#39; &#39;, &#39;"&#39;, "&#39;", "<", ">", "   ", "%3C", "%3E");
$newstr = array(&#39;&#39;, &#39;&#39;, &#39;&#39;, &#39;&&#39;, &#39; &#39;, &#39;"&#39;, &#39;&#39;&#39;, "<", ">", "   ", "<", ">");
$value  = str_replace($badstr, $newstr, $value);
$value  = preg_replace(&#39;/&((#(\d{3,5}|x[a-fA-F0-9]{4}));)/&#39;, &#39;&\\1&#39;, $value);
return $value;
}
/**
* 私有路劲安全转化
*  Controller中使用方法:$this->controller->filter_dir($fileName)
* @param string $fileName
* @return string
*/
function filter_dir($fileName) {
$tmpname = strtolower($fileName);
$temp = array(&#39;:/&#39;,"\0", "..");
if (str_replace($temp, &#39;&#39;, $tmpname) !== $tmpname) {
  return false;
}
return $fileName;
}
/**
* 过滤目录
*  Controller中使用方法:$this->controller->filter_path($path)
* @param string $path
* @return array
*/
public function filter_path($path) {
$path = str_replace(array("&#39;",&#39;#&#39;,&#39;=&#39;,&#39;`&#39;,&#39;$&#39;,&#39;%&#39;,&#39;&&#39;,&#39;;&#39;), &#39;&#39;, $path);
return rtrim(preg_replace(&#39;/(\/){2,}|(\\\){1,}/&#39;, &#39;/&#39;, $path), &#39;/&#39;);
}
/**
* 过滤PHP标签
*  Controller中使用方法:$this->controller->filter_phptag($string)
* @param string $string
* @return string
*/
public function filter_phptag($string) {
return str_replace(array(&#39;&#39;), array(&#39;<?&#39;, &#39;?>&#39;), $string);
}
/**
* 安全过滤类-返回函数
*  Controller中使用方法:$this->controller->str_out($value)
* @param  string $value 需要过滤的值
* @return string
*/
public function str_out($value) {
$badstr = array("<", ">", "%3C", "%3E");
$newstr = array("<", ">", "<", ">");
$value  = str_replace($newstr, $badstr, $value);
return stripslashes($value); //下划线
}


Das obige ist der detaillierte Inhalt vonBeispielcode für die PHP-Sicherheitsfilterfunktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn