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

php过滤木马,苹果CMS V10被挂马解决方案 - 第1张 - 菜鸟建站

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

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

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

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

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

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

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

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

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

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

{$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 . '.*?>(.|\n)*?<\/' . $tag . '>)/is';
        }
    }else{
        foreach ($tags as $tag) {
            $html[] = "/(<(?:\/" . $tag . "|" . $tag . ")[^>]*>)/is";
        }
    }
    $data = preg_replace($html, '', $str);
    return $data;
}

使用方法,如:

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

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

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

通过上面我们知道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']);

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

php防sql注入类

在这里提供一个:

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

大家可以参考一下!

更多:

苹果maccms网站漏洞进行修复解决方法教程

相关推荐

PHP教程:PHP 返回数组中第一个通过条件的元素
  • php教程
  • 2021-04-13

PHP教程:PHP 返回数组中第一个通过条件的元素

PHP  array_filter() 函数可以通过回调函数过滤数组的元素,返回的是过滤后的数组。但是很多时候,我们只是简单的要求返回第一个通过条件的元素,这个时候,我们就需要做一些处理,所以我把这个过程整理成一个函数 array_first。function array_first($array, ...

PHP读取CSV文件中指定的某几行数据
  • php教程
  • 2021-04-07

PHP读取CSV文件中指定的某几行数据

最近在玩CSV表格比较多,CSV是什么?相信很多人都知道EXCEL表格那么这两者有何区别呢?1.CSV是纯文本文件,excel不是纯文本,excel包含很多格式信息在里面。2.CSV文件的体积会更小,创建分发读取更加方便,适合存放结构化信息,比如记录的导出,流量统计等等。3.CSV文件在windows平台默认的打开方式是excel,但是它的本质是一个文本文件...

PHP教程:time时间类实例代码
  • php教程
  • 2021-03-10

PHP教程:time时间类实例代码

在我们开发过程中,常常用到时间的一些例子,比如昨天,今天,前天,近七天,一周等等。在这里整理了一个时间的完整类php实例,直接实例化,有需要的朋友可以看看大家可以按照下面那个例子,输出你想要得到的日期,在开发过程中,可以直接放入在扩展库里,直接引用即可!<?php header("Content-type:text/html;Charset...

自动推送脚本(适用于百度推送懒人版插件)
  • php教程
  • 2021-02-22

自动推送脚本(适用于百度推送懒人版插件)

有时候我们推送页面URL并不是zblog系统产生的页面甚至当你想要推送其他网站URL的时候可能就需要到另外写脚本或插件。那么在这里给大家送上一个简单的推送脚本,配合zblog百度推送懒人版适用于推送任何网站内容。首先我们在zblog网站根目录新建一个tuisong.php,<?php  require 'zb_system...

php基于curl实现必应Bing API推送方法实例
  • php教程
  • 2021-02-13

php基于curl实现必应Bing API推送方法实例

<?php $arr = array(     'https://www.newbii.cn/' => array(         'url'&nb...

PHP教程:php实现敏感词过滤 停止词实例(附敏感词库下载)
  • php教程
  • 2021-01-13

PHP教程:php实现敏感词过滤 停止词实例(附敏感词库下载)

敏感词、文字过滤是一个网站必不可少的功能,如何设计一个好的、高效的过滤算法是非常有必要的。在实现敏感词过滤的算法中,我们必须要减少运算,而 DFA 在 DFA 算法中几乎没有什么计算,有的只是状态的转换。所以想更高效的进行敏感词的过滤,需要使用 DFA 算法。/**  * Notes: [DoFilterWords ...

PHP教程:PHP判断远程文件是否存在
  • php教程
  • 2021-01-11

PHP教程:PHP判断远程文件是否存在

这个代码可以判断远程文件或者本地代码,但其实主要作用就是判断远程文件,判断本地文件建议直接是要file_exists函数。function my_file_exists($file) {     if(preg_match('/^http:\/\//',$file)){ ...

PHP教程:php实现生成微博短网址实例
  • php教程
  • 2021-01-09

PHP教程:php实现生成微博短网址实例

下面分享一下通过php生成短网址的那个过程(这里将长网址生成短至5-6位字符长度并且还需要是唯一的):<?php function code62($x) {     $show = '';     while($...

PHP教程:通用PHP分页类、分页显示实例方法
  • php教程
  • 2020-12-09

PHP教程:通用PHP分页类、分页显示实例方法

本文通过PHP分页显示实例方法,结合实例形式分析了php数据库查询及内容结合HTML分页显示的简单操作技巧,希望对大家学习PHP程序设计有所帮助。先来看个实例<?php header("content-type:text/html;charset=utf-8"); $currentpage = 1; if(...

iconv('GBK','UTF-8',$str) 如果$str本来就是utf-8 是不是会乱码?
  • php教程
  • 2020-12-07

iconv('GBK','UTF-8',$str) 如果$str本来就是utf-8 是不是会乱码?

尝试了一下,是直接报错吧,iconv(): Detected an illegal character in input string所以我们先判断是不是utf8,再转码吧,这样保险点mb_detect_encoding — 检测字符的编码echo mb_detect_encoding($str,'UTF-8,GBK')!...