百度 | 神马 | 搜狗 | 技术文档 | 学习资料分享 - 记录帝国CMS及运维技术的点点滴滴
你的位置:首页 > 实用IT技术 » 正文

【网站建设】2019PHP通用SQL过滤方法

发布时间:2020-09-17

作品分类:网站建设  过滤  这个问题  网站  过滤  通用  方法  PHP  SQL

2019PHP通用SQL过滤方法,从2018年年末到2019年年初,很多同行反应网站被中木马了,不知道如何处理,出现这个问题大部分都是因为使用了开源代码导致的这个问题,同时因为品势没有关注官方的漏洞修复,导致了一个网站被攻陷,同服务器网站批量被植入木马的或博彩非法信息的情况。作者也在2019年2月28日发表了关于目前互联网安全的相关文章  点击可阅读详情

优化千万条,安全第一条!防护不到位,站长两行泪!

<?php

//2019PHP通用SQL过滤方法
//IT131建站
//可以屏蔽常规的sql漏洞或注入
//该程序只写的get post过滤 其它类型可以自行添加

/*404页面*/
function html404()
{
    header("http//1.1 404 not found");
    header("status: 404 not found");            
    $htm='<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
            <html><head>
            <title>404 Not Found</title>
            </head><body>
            <h1>404 Not Found</h1>
            <p>The requested URL was not found on this server.</p>
            </body></html>';
    exit($htm);
}
/*检查数组*/
function checkstr($str)
{
    /*过滤的自己可以新增*/
    $nosql='eval|select|$_|fputs|vars[|delete|upfile|/think|function=|invokefunction|call_user_func_array';
    $arr=explode('|',$nosql);
    foreach ($arr as $ky)
    {
        if (str_replace($ky,'##',$str)!=$str)
        {
            html404();
        }
    }
}
/*检查字符串*/
function checksql($arr)
{
    foreach ($arr as $key => $row)
    {
        if (is_array($row))
        {
            checksql($row);
        }
        else
        {
            checkstr($row);
        }
    }
}

/*禁止访问入口文件*/
$url=$_SERVER['REQUEST_URI'];
$url=strtolower($url);
if ($url!=str_replace('index.php','',$url) || $url!=str_replace('api.php','',$url))
{
    html404();
}
checkstr($url);

/*post get检测*/
$post=$_POST;
$get=$_GET;
if ($post)
{
    checksql($post);
}
if ($get)
{
    checksql($get);
}
?>

Top