php防止xss攻击以及sql注入

本文介绍了一个用于PHP的自定义安全过滤函数,该函数通过正则表达式移除潜在的XSS攻击和SQL注入风险字符串,同时对输入进行HTML实体转换,确保网页内容的安全呈现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

function SafeFilter (&$arr) 
{
   $ra=Array('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/','/select/','/from/','/update/','/delete/','/drop/','/alter/','/script/','/javascript/','/vbscript/','/expression/','/applet/'
   ,'/meta/','/xml/','/blink/','/link/','/style/','/embed/','/object/','/frame/','/layer/','/title/','/bgsound/'
   ,'/base/','/onload/','/onunload/','/onchange/','/onsubmit/','/onreset/','/onselect/','/onblur/','/onfocus/',
   '/onabort/','/onkeydown/','/onkeypress/','/onkeyup/','/onclick/','/ondblclick/','/onmousedown/','/onmousemove/'
   ,'/onmouseout/','/onmouseover/','/onmouseup/','/onunload/');
   if (is_array($arr))
   {
     foreach ($arr as $key => $value) 
     {
        if (!is_array($value))
        {
          if (!get_magic_quotes_gpc())  //不对magic_quotes_gpc转义过的字符使用addslashes(),避免双重转义。
          {
             $value  = addslashes($value); //给单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)
          }
          $value       = preg_replace($ra,'',$value);     //删除非打印字符,粗暴式过滤xss可疑字符串
          $arr[$key]     = htmlentities(strip_tags($value)); //去除 HTML 和 PHP 标记并转换为 HTML 实体
        }else{
          SafeFilter($arr[$key]);
        }
     }
   }else{
	if(!get_magic_quotes_gpc())  //不对magic_quotes_gpc转义过的字符使用addslashes(),避免双重转义。
	  {
		 $arr  = addslashes($arr); //给单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)
		 //加上反斜线转义
	  }
	  $arr    = preg_replace($ra,'',$arr);     //删除非打印字符,粗暴式过滤xss可疑字符串
	  $arr    = htmlentities(strip_tags($arr)); //去除 HTML 和 PHP 标记并转换为 HTML 实体
   }
}
//使用
$post_info=array(
	'aa'=>'121212<meta http-equiv="refresh" content="0;">',
	'bbb'=>'<script>alert(111)</script>'
);
SafeFilter($post_info);
print_r($post_info);
$str = 'www.testdemo.com<meta http-equiv="refresh" content="0;">';
SafeFilter ($str);
echo $str;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值