最进很多做影视站的朋友都懵逼了,网站被挂马了。
都不容易啊,一方面还要堤防着侵权的风险,一方面还担心着抢了大佬的词,挨打站...这会儿又来个被挂马了
含辛茹苦的把“儿子”养大,这会儿成了别人赚钱的工具。你说气不气。。。
挂马的方式很多种,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注入类
在这里提供一个:
大家可以参考一下!