網站用的tomcat伺服器,結果裡面的音樂總是被盜鏈,非常鬱悶。尋找了n多資料,使用了n款軟體都沒有用,因為我們的應用比較特殊,總會把不該防的也防了。一怒之下就研究了一下防盜鏈原理,親自寫了一款防盜鏈的過濾器,代碼非常簡單如下:
/**
* @author
* @company
* @time Dec 18, 2006 2:08:18 PM
* @version 1.0.0.0
* @package com
*/
package com;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
/**
* Description : 這個過濾器用來保護內容檔案不被惡意盜鏈
* @author : okwang
* @version : 1.0.0 2007-06-08
*
*/
public class DownFilter implements Filter {
/*
* (non-Javadoc)
*
* @see javax.servlet.Filter#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
}
/*
* (non-Javadoc)
*
* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest,
* javax.servlet.ServletResponse, javax.servlet.FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest req = (HttpServletRequest)request;
String info=req.getHeader("User-Agent");
if (info != null && !info.equals("contype")) {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html><head></head><body>");
out.println("<h1>對不起,,您沒有訪問的許可權!");
out.println("</h1></body></html>");
out.flush();
return;
}else
{
chain.doFilter(request, response);
}
}
/*
*
* @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
*/
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
另外還要在工程項目的web.xml裡加上如下語句:
<filter>
<filter-name>DownFilter</filter-name>
<filter-class>com.DownFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>DownFilter</filter-name>
<url-pattern>/upload/up/*</url-pattern>
</filter-mapping>
紅字為所保護的內容檔案夾