巩固程序安全性,安全过滤函数代码

By admin in 4858.com on 2019年7月28日

以下为过滤HTML代码的函数:

但是我们能够用正则实行替换:

<?php
//alert提示
function alert($msg){
echo “<script>alert(‘$msg’);</script>”;
}
//把一些预定义的字符转变为 HTML 实体
function d_htmlspecialchars($string) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = d_htmlspecialchars($val);
}
} else {
$string = str_replace(‘&’, ‘&’, $string);
$string = str_replace(‘”‘, ‘”‘, $string);
$string = str_replace(”’, ”’, $string);
$string = str_replace(‘<‘, ‘<‘, $string);
巩固程序安全性,安全过滤函数代码。$string = str_replace(‘>’, ‘>’, $string);
$string = preg_replace(‘/&(#\d;)/’, ‘&\1’, $string);
}
return $string;
}
//在预订义字符前加上反斜杠,包罗单引号、双引号、反斜杠、NULL,以敬重数据库安全
function d_addslashes($string, $force = 0) {
if(!$GLOBALS[‘magic_quotes_gpc’] || $force) {
if(is_array($string)) {
foreach($string as $key => $val) $string[$key] =
d_addslashes($val, $force);
}
else $string = addslashes($string);
}
return $string;
}
//生成随机字符串,包罗大写、小写字母、数字
function randstr($length) {
$hash = ”;
$chars =
‘ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz’;
$max = strlen($chars) – 1;
mt_srand((double)microtime() * 1000000);
for($i = 0; $i < $length; $i++) {
$hash .= $chars[mt_rand(0, $max)];
}
return $hash;
}
//调换时间戳为常用的日子格式
function trans_time($timestamp){
if($timestamp < 1) echo ‘无效的Unix时间戳’;
else return date(“Y-m-d H:i:s”,$timestamp);
}
//获取IP
function get_ip() {
if ($_SERVER[“HTTP_X_FORWARDED_FOR”])
$ip = $_SERVER[“HTTP_X_FORWARDED_FOR”];
else if ($_SERVER[“HTTP_CLIENT_IP”])
$ip = $_SERVER[“HTTP_CLIENT_IP”];
else if ($_SERVER[“REMOTE_ADDR”])
$ip = $_SERVER[“REMOTE_ADDR”];
else if (getenv(“HTTP_X_FORWARDED_FOR”))
$ip = getenv(“HTTP_X_FORWARDED_FOR”);
else if (getenv(“HTTP_CLIENT_IP”))
$ip = getenv(“HTTP_CLIENT_IP”);
else if (getenv(“REMOTE_ADDR”))
$ip = getenv(“REMOTE_ADDR”);
else
$ip = “Unknown”;
return $ip;
}
//总结时间差:暗中认可再次回到类型为“分钟”
//$old_time 只好是岁月戳,$return_type 为 h 是小时,为 s 是秒
function timelag($old_time,$return_type=’m’){
if($old_time < 1){
echo ‘无效的Unix时间戳’;
}else{
switch($return_type){
case ‘h’:
$type = 3600; break;
case ‘m’:
$type = 60; break;
case ‘s’:
$type = 1; break;
case ”:
$type = 60; break;
}
$dif = round( (time()-$old_time)/$type ) ;
return $dif;
}
}
//获取当前页面的U翼虎L地址
function url_this(){
$url = ”
[“HTTP_HOST”].$_SERVER[“REQUEST_URI”];
$return_url = “<a href=’$url’>$url</a>”;
return $return_url;
}
//跳转函数
function url_redirect($url,$delay=”){
if($delay == ”){
echo “<script>window.location.href=’$url'</script>”;
}else{
echo “<meta http-equiv=’refresh’ content=’$delay;URL=$url’ />”;
}
}
} //end func

复制代码 代码如下:

复制代码 代码如下:

复制代码 代码如下:

?>

//安全过滤输入[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”,'<‘),'<‘,$string);
$string = str_replace(array(“%3E”,’>’),’>’,$string);
$string = str_replace(array(‘”‘,”‘”,”\t”,’ ‘),array(‘“’,’‘’,’ ‘,’
‘),$string);
return trim($string);
}

function ihtmlspecialchars($string) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = ihtmlspecialchars($val);
}
} else {
$string =
preg_replace(‘/&((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/’,
‘&\\1’,
str_replace(array(‘&’, ‘”‘, ‘<‘, ‘>’), array(‘&’, ‘”‘, ‘<‘,
‘>’), $string));
}
return $string;
}

<?php
function dhtmlspecialchars($string) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = dhtmlspecialchars($val);
}
} else {
$string =
preg_replace(‘/&((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/’,
‘&\\1’,
str_replace(array(‘&’, ‘”‘, ‘<‘, ‘>’), array(‘&’, ‘”‘, ‘<‘,
‘>’), $string));
}
return $string;
}
?>

你或然感兴趣的篇章:

  • 4858.com,php自定义函数call_user_func和call_user_func_array详解
  • Thinkphp模板中央银行使自定义函数的艺术
  • PHP二维数组排序的3种方法和自定义函数分享
  • 浅析php中哪些调用用户自定义函数
  • 使PHP自定义函数重临七个值
  • php图片管理:加水印、缩略图的兑现(自定义函数:watermark、thumbnail)
  • PHP随机生成独一HASH值自定义函数
  • ThinkPHP自定义函数解决模板标签加减运算的点子
  • php中自定义函数dump查看数组新闻类似var_dump
  • 第七章
    php自定义函数完结代码
  • PHP入门教程之自定义函数用法详解(成立,调用,变量,参数,再次回到值等)

上边是为我们整理的局地过滤函数:

php下过滤HTML代码的函数

您恐怕感兴趣的篇章:

  • PHP对表单提交特殊字符的过滤和管理格局汇总
  • PHP中ltrim与rtrim去除左右空格及特殊字符实例
  • PHP使用trim函数去除字符串左右空格及特殊字符实例
  • 老版本PHP转义Json里的特殊字符的函数
  • php替换超长文本中的特殊字符的函数代码
  • PHP 正则表明式特殊字符 [:alnum:] [:alpha:]
  • PHP在特殊字符前加斜杠的落到实处代码
  • PHP轻巧处理表单输入的特殊字符的不二诀窍

复制代码 代码如下:

复制代码 代码如下:

/**
* 安全过滤类-过滤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”, ”, $value);
return $value;
}

function htmlEncode($string) {
$string=trim($string);
$string=str_replace(“&”,”&”,$string);
$string=str_replace(“‘”,”‘”,$string);
$string=str_replace(“&”,”&”,$string);
$string=str_replace(“””,”””,$string);
$string=str_replace(“\””,”””,$string);
$string=str_replace(“<“,”<“,$string);
$string=str_replace(“<“,”<“,$string);
$string=str_replace(“>”,”>”,$string);
$string=str_replace(“>”,”>”,$string);
$string=str_replace(” “,” “,$string);
$string=nl2br($string);
return $string;
}

/**
* 安全过滤类-过滤HTML标签

Controller中采纳办法:$this->controller->fliter_html($value)
* @param  string $value 必要过滤的值
* @return string
*/
function fliter_html($value) {
if (function_exists(‘htmlspecialchars’)) return
htmlspecialchars($value);
return str_replace(array(“&”, ‘”‘, “‘”, “<“, “>”), array(“&”,
“\””, “‘”, “<“, “>”), $value);
}

你大概感兴趣的小说:

  • CI框架的安全性剖判
  • CI框架安全类Security.php源码深入分析
  • CodeIgniter框架过滤HTML危急代码
  • 浅谈php(codeigniter)安全性注意事项
  • CodeIgniter安全辅车相依设置聚集
  • php完毕XSS安全过滤的方法
  • PHP中字符安全过滤函数使用小结
  • php常用的安全过滤函数集锦
  • PHP开辟不能够违反的本溪准绳过滤用户输入
  • php
    HtmlReplace输入过滤安全函数
  • CI框架安全过滤函数示例

/**
* 安全过滤类-对踏入的多寡加下划线 幸免SQL注入
*  Controller中利用办法:$this->controller->fliter_sql($value)
* @param  string $value 供给过滤的值
* @return string
*/
function fliter_sql($value) {
$sql = array(“select”, ‘insert’, “update”, “delete”, “\'”, “\/\*”,
     “\.\.\/”, “\.\/”, “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”, ‘&’, ‘ ‘, ‘”‘, “‘”, “<“, “>”,
”   “, “%3C”, “%3E”);
$newstr = array(”, ”, ”, ‘&’, ‘ ‘, ‘”‘, ”’, “<“, “>”, ”   “,
“<“, “>”);
$value  = str_replace($badstr, $newstr, $value);
$value  = preg_replace(‘/&((#(\d{3,5}|x[a-fA-F0-9]{4}));)/’,
‘&\\1’, $value);
return $value;
}

/**
* 私有路劲安全转账

Controller中使用办法:$this->controller->filter_dir($fileName)
* @param string $fileName
* @return string
*/
function filter_dir($fileName) {
$tmpname = strtolower($fileName);
$temp = array(‘:/’,”\0″, “..”);
if (str_replace($temp, ”, $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(“‘”,’#’,’=’,’`’,’$’,’%’,’&’,’;’), ”,
$path);
return rtrim(preg_replace(‘/(\/){2,}|(\\\){1,}/’, ‘/’, $path),
‘/’);
}

/**
* 过滤PHP标签

Controller中选用格局:$this->controller->filter_phptag($string)
* @param string $string
* @return string
*/
public function filter_phptag($string) {
return str_replace(array(”), array(‘<?’, ‘?>’), $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); //下划线
}

您大概感兴趣的篇章:

  • YII
    Framework的filter过滤器用法分析
  • PHP的Yii框架中过滤器相关的行使总括
  • php完毕XSS安全过滤的不二等秘书籍
  • PHP中字符安全过滤函数使用小结
  • php判定文件上传类型及过滤不安全部据的主意
  • php常用的保山过滤函数集锦
  • php
    对输入音信的实行安全过滤的函数代码
  • PHP开采不可能违反的安全准则过滤用户输入
  • php
    HtmlReplace输入过滤安全函数
  • php下过滤html代码的函数
    提升程序安全性
  • Yii净化器CHtmlPurifier用法示例(过滤不良代码)

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有