php过滤木马,苹果CMS V10被挂马解决方案

最进很多做影视站的朋友都懵逼了,网站被挂马了。

都不容易啊,一方面还要堤防着侵权的风险,一方面还担心着抢了大佬的词,挨打站...这会儿又来个被挂马了

含辛茹苦的把“儿子”养大,这会儿成了别人赚钱的工具。你说气不气。。。

挂马的方式很多种,SQL注入,网站敏感文件扫描,服务器漏洞,网站程序....

还有一种可能,你自己采集入库。防不胜防啊 兄die!

在这里主要以苹果CMS v10为例,仅供学习参考。

我们都知道很多网站 无非就是读取数据库,在将其内容输出到页面上

1第一种,假设数据库已有木马程序代码

很多人肯定都会想到数据库批量替换语句

其实我们还可这么做,就是在他输出到页面上的时候将其斩杀在“摇篮”里

{$vo.vod_content|mac_filter_html}返回没有html代码的内容//这个是苹果CMS给的代码//很多人都是被挂到了视频名称里面//将其视频名代码改成即可{$vo.vod_name|mac_filter_html}

那么这个mac_filter_html为什么就能过滤木马了呢,我们来看看官方这个mac_filter_html到底是怎样的

function mac_filter_html($str){    return strip_tags($str);}

很显然是利用strip_tags() 函数剥去字符串中的 HTML、XML 以及 PHP。

strip_tags()语法

strip_tags(string,allow)


参数描述
string必需。规定要检查的字符串。
allow可选。规定允许的标签。这些标签不会被删除。

当然了,你还可以自己写一个过滤函数。如:


/**
 * 删除指定标签
 * 加入到common.php里面
 * @param array $tags     删除的标签  多个用,分开
 * @param string $str     html字符串
 * @param bool $content   1不保留保留标签的内容text
 * @return mixed
 */function stripHtmlTags($str,$tags,$content=''){    $html = [];    $tags = explode(",",$tags);    // 是否保留标签内的text字符    if($content==1){        foreach ($tags as $tag) {            $html[] = '/(<' . $tag . '.*?>(.|
)*?</' . $tag . '>)/is';        }    }else{        foreach ($tags as $tag) {            $html[] = "/(<(?:/" . $tag . "|" . $tag . ")[^>]*>)/is";        }    }    $data = preg_replace($html, '', $str);    return $data;}

使用方法,如:

{$vo.vod_content|stripHtmlTags='script',''}//过滤script标签

2接下来第二种假设,假设木马是采集的时候入库的

也就是说假设采集的资源库内容里面就已经包含了木马

通过上面我们知道strip_tags() 函数可以剥去字符串中的 HTML、XML 以及 PHP。

这是后我们只需在入库的时候加以过滤即可

找到入库文件/application/common/model/Collect.php

大概417行这样,版本不一,如果有则修改,没有则添加添加strip_tags() 函数

$v['vod_name'] = strip_tags($v['vod_name']);或$v['vod_name'] = mac_filter_html($v['vod_name']);

当然了,你也可以添加到其他地方,比如图片地址,简介....然后清理缓存文件

3php防sql注入类

在这里提供一个:

 一个很好用的防SQL注入的php类库    

大家可以参考一下!


介绍

还不知道要介绍点什么,先将就下。

筱昵博客
联系QQ