码迷,mamicode.com
首页 > 其他好文 > 详细

设置tomcat虚拟路径,删除指定文件

时间:2015-04-14 14:37:24      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:tomcat   安全   定时器   

一、背景

    服务器经常被人黑。webapps下时常莫名其妙的多了一个未知的恶意war文件。对此的反应:

    1、修改tomcat虚拟路径。

    2、定时检测webapps和work文件夹下的文件,删除不知名的文件。

二、tomcat的server.xml

    在C盘下新建webApp和、webWork两个文件夹,将server.xml中的host节点修改为:

      <Host name="localhost"
            appBase="C:/webApp/"
            workDir="C:/webWork/"
            unpackWARs="true" autoDeploy="true">
三、新建一个listener。

    1、ProtectTaskListener.java

package com.px.listener;

import com.px.util.Config;
import java.util.Timer;
import java.util.TimerTask;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

/**
 * 文件检测监听器
 * 
 * @author liyulin lyl010991@126.com
 * @version 1.0 2015-04-13
 */
public class ProtectTaskListener implements ServletContextListener {
    private Timer timer;

    public void contextInitialized(ServletContextEvent event) {
        timer = new Timer();
        timer.schedule(
                new TimerTask() {
                    public void run() {
                        ProtectUtil.deleteOtherFile();
                    }
                }, Config.CHECK_TIME);
    }

    public void contextDestroyed(ServletContextEvent event) {
        timer.cancel();
    }

}


    2、ProtectUtil.java

package com.px.listener;

import java.io.File;

/**
 * 删除webApp和webWork下的(除了hospital1、installer、jswork、reports)其它文件
 * 
 * @author liyulin lyl010991@126.com
 * @version 1.0 2015-04-13
 */
public class ProtectUtil {

    public static final String WEBAPPS_PATH = "C:/webApp";
    public static final String WORK_PATH = "C:/webWork";
    public static final String[] WORK_FILE_PATH = new String[]{
        "hospital1",
        "installer",
        "jswork",
        "reports"
    };

    public static void deleteOtherFile() {
        deleteWebAppsOtherFile();
        deleteWorkOtherFile();
    }

    /**
     * 删除webapps下除了hospital1的其它所有文件
     */
    public static void deleteWebAppsOtherFile() {
        File file = new File(WEBAPPS_PATH);
        if (file.exists()) {
            File[] fileLists = file.listFiles();
            for (File f : fileLists) {
                if (!f.getName().equals("hospital1")) {
                    delFileOrDerectory(f);
                }
            }
        }
    }

    /**
     * 删除work下除了"hospital1"、"installer"、"jswork"、"reports"的所有文件
     */
    public static void deleteWorkOtherFile() {
        File file = new File(WORK_PATH);
        if (file.exists()) {
            File[] fileLists = file.listFiles();
            for (File f : fileLists) {
                boolean isDelete = true;// 删除文件标志。true:删除
                for (String workFile : WORK_FILE_PATH) {
                    if (f.getName().equals(workFile)) {
                        isDelete = false;
                        break;
                    }
                }
                if (isDelete) {
                    delFileOrDerectory(f);
                }
            }
        }
    }

    /**
     * 删除文件夹、文件
     *
     * @param file 待删除文件、文件夹
     */
    private static void delFileOrDerectory(File file) {
        if (file.exists()) {
            if (file.isDirectory()) {
                File[] files = file.listFiles();
                for (File subFile : files) {
                    delFileOrDerectory(subFile);
                }
                file.delete();
            } else {
                file.delete();
            }
        }
    }
}

四、修改web.xml

    在web-app节点下添加:

    <listener>
        <listener-class>
            com.px.listener.ProtectTaskListener
        </listener-class>
    </listener>





设置tomcat虚拟路径,删除指定文件

标签:tomcat   安全   定时器   

原文地址:http://blog.csdn.net/class_horse/article/details/45040753

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!