JavaScriptFilter.java
上传用户:huihesys
上传日期:2007-01-04
资源大小:3877k
文件大小:2k
- /* CVS ID: $Id: JavaScriptFilter.java,v 1.2 2000/04/06 08:02:02 wastl Exp $ */
- package net.wastl.webmail.ui.html;
- import gnu.regexp.*;
- /*
- * JavaScriptFilter.java
- *
- * Created: Thu Oct 14 12:08:28 1999
- *
- * Copyright (C) 1999-2000 Sebastian Schaffert
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
- /**
- * Filter JavaScript content from HTML messages to avoid security problems.
- *
- * @author Sebastian Schaffert
- * @version
- */
- public class JavaScriptFilter {
- private static RE jscriptfil1=null;
- private static RE jscriptfil2=null;
- private static RE jscriptfil3=null;
- private static boolean initialized=false;
-
- public JavaScriptFilter() {
-
- }
- public static void init() {
- try {
- jscriptfil1=new RE("<\s*SCRIPT[^>]*>",RE.REG_ICASE);
- jscriptfil2=new RE("<\s*\/SCRIPT[^>]*>",RE.REG_ICASE);
- jscriptfil3=new RE("<\s*A +HREF *=.*"(javascript:[^"]*)"[^>]*>([^<]+)</A>",RE.REG_ICASE);
- // Link highlighting
- //uri=new RE("http\:\/\/(.+)(html|\/)(\S|\-|\+|\.|\|\:)");
- initialized=true;
- } catch(Exception e) {
- e.printStackTrace();
- }
- }
- public static String apply(String s) {
- if(!initialized) {
- init();
- }
- String retval=s;
- retval=jscriptfil1.substituteAll(retval,"<P><FONT color="red">WebMail security: JavaScript filtered</FONT>:<BR>n<HR>n<FONT COLOR="orange"><PRE>");
- retval=jscriptfil2.substituteAll(retval,"</PRE></FONT><HR><FONT color="red">JavaScript end</FONT><P>");
- retval=jscriptfil3.substituteAll(retval,"<FONT COLOR="red">WebMail security: JavaScript link filtered:</FONT> <FONT COLOR="orange">$1</FONT> $2 ");
- return retval;
- }
-
- } // JavaScriptFilter