您的位置:首页 > 编程语言 > PHP开发

php通用防注入和XSS攻击全局过滤代码

2015-09-11 00:00 751 查看
摘要: //php通用防注入和XSS攻击过滤代码. 通常在数据库配置文件引用 如db_config.php 即可实现全局过滤
//by qq:831937

<?php
//php防注入和XSS攻击通用过滤.
//by qq:831937
$_GET         && SafeFilter($_GET);
$_POST        && SafeFilter($_POST);
$_COOKIE    && SafeFilter($_COOKIE);

function SafeFilter (&$arr)
{

$ra=Array('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/','/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]);
}
}
}
}
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息