JavaScriptFilter.java
上传用户:huihesys
上传日期:2007-01-04
资源大小:3877k
文件大小:2k
源码类别:

WEB邮件程序

开发平台:

C/C++

  1. /* CVS ID: $Id: JavaScriptFilter.java,v 1.2 2000/04/06 08:02:02 wastl Exp $ */
  2. package net.wastl.webmail.ui.html;
  3. import gnu.regexp.*;
  4. /*
  5.  * JavaScriptFilter.java
  6.  *
  7.  * Created: Thu Oct 14 12:08:28 1999
  8.  *
  9.  * Copyright (C) 1999-2000 Sebastian Schaffert
  10.  * 
  11.  * This program is free software; you can redistribute it and/or
  12.  * modify it under the terms of the GNU General Public License
  13.  * as published by the Free Software Foundation; either version 2
  14.  * of the License, or (at your option) any later version.
  15.  * 
  16.  * This program is distributed in the hope that it will be useful,
  17.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  18.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19.  * GNU General Public License for more details.
  20.  * 
  21.  * You should have received a copy of the GNU General Public License
  22.  * along with this program; if not, write to the Free Software
  23.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  24.  */
  25. /**
  26.  * Filter JavaScript content from HTML messages to avoid security problems.
  27.  *
  28.  * @author Sebastian Schaffert
  29.  * @version
  30.  */
  31. public class JavaScriptFilter  {
  32.     private static RE jscriptfil1=null; 
  33.     private static RE jscriptfil2=null;
  34.     private static RE jscriptfil3=null;
  35.     private static boolean initialized=false;
  36.     
  37.     public JavaScriptFilter() {
  38.     }
  39.     public static void init() {
  40. try {
  41.     jscriptfil1=new RE("<\s*SCRIPT[^>]*>",RE.REG_ICASE);
  42.     jscriptfil2=new RE("<\s*\/SCRIPT[^>]*>",RE.REG_ICASE);
  43.     jscriptfil3=new RE("<\s*A +HREF *=.*"(javascript:[^"]*)"[^>]*>([^<]+)</A>",RE.REG_ICASE);
  44.     // Link highlighting
  45.     //uri=new RE("http\:\/\/(.+)(html|\/)(\S|\-|\+|\.|\|\:)");
  46.     initialized=true;
  47. } catch(Exception e) {
  48.     e.printStackTrace();
  49. }
  50.     }
  51.     public static String apply(String s) {
  52. if(!initialized) {
  53.     init();
  54. }
  55. String retval=s;
  56. retval=jscriptfil1.substituteAll(retval,"<P><FONT color="red">WebMail security: JavaScript filtered</FONT>:<BR>n<HR>n<FONT COLOR="orange"><PRE>");
  57. retval=jscriptfil2.substituteAll(retval,"</PRE></FONT><HR><FONT color="red">JavaScript end</FONT><P>");
  58. retval=jscriptfil3.substituteAll(retval,"<FONT COLOR="red">WebMail security: JavaScript link filtered:</FONT> <FONT COLOR="orange">$1</FONT> $2 ");
  59. return retval;
  60.     }
  61.     
  62. } // JavaScriptFilter