AntiSQLFilter   SourceForge.net Logo
english | portuguese
by SmartWare  
   
 
      HOME       
 
     HOW TO     
 
   DOWNLOAD   
 
 @SourceForge 
 
       LINKS       
 
 
 
 
 
 
 
 
 
 
 
 

1. Classpath

O arquivo jar do AntiSQLFilter jar deve estar presente no classpath de sua aplicação web
(por exemplo: [webapps/minhaAplicacao | meu arquivo war]/WEB-INF/lib)

2. web.xml

Seu arquivo web.xml deve configurar o AntiSQLFilter:

...

<filter>
  <filter-name>antiSQL</filter-name>
  <filter-class>org.smartware.antisql.AntiSQLFilter</filter-class>
  <init-param>
    <param-name>logging</param-name>
    <param-value>true</param-value>
  </init-param>
  <init-param>
    <param-name>behavior</param-name>
    <param-value>forward</param-value>
  </init-param>
  <init-param>
    <param-name>forwardTo</param-name>
    <param-value>/noWay.jsp</param-value>
  </init-param>
</filter>

<filter-mapping>
   <filter-name>antiSQL</filter-name>
   <url-pattern>*.do</url-pattern>
</filter-mapping> <listener>

...

<servlet>
   <servlet-name>myServlet</servlet-name>
   <servlet-class>test.MyServlet</servlet-class>
</servlet>

<servlet-mapping>
   <servlet-name>myServlet</servlet-name>
   <url-pattern>myServlet.do</url-pattern>
</servlet-mapping>

...

Sobre os initial parameters:

a) logging = true - o método de log do ServletContext será chamado para registrar qualquer tentativa de injeção de SQL:

Possible SQL injection attempt #1 at Mon Aug 29 20:17:03 BRT 2005
Remote Address: 127.0.0.1
Remote User: null
Session Id: B66B7EB264DB1FB67748B4B595D0395F
URI: /virtual-store/login.do
Parameters via POST
  password = 567567567
  Submit = enter
  email = ' and 0=0; --

b) behavior = forward - o request será encaminhado pelo filtro para um recurso específico em caso de injeção de SQL. Há mais dois comportamentos possíveis estabelecidos via configuração:

behavior = protect - (comportamento default) valores de parâmetros de requisição com palavras chave periogosas do SQL terão seu segundo caracter suprimido / delimitadores perigosos do SQL serão substituídos por espaço em branco. Depois das substituições o request continua seu caminho na aplicação web como seria esperado.

behavior = throw - uma ServletException é lançada - quebrando o fluxo da requisição.

c) forwardTo : o nome do recurso web para redirecionamento.

Considerações sobre filtros J2EE :

a) Recomendamos que o AntiSQLFilter seja configurado como o primeiro filtro da aplicação web. Filtros predecessores podem desviar a cadeia de processamento do request evitando a interceptação de riscos potenciais..

b) É possível configurar vários elementos <filter-mapping> para o mesmo elemento <filter-name> do AntiSQLFilter - é uma forma de capturar requisições a múltiplos padrões de URL (por exemplo *.jsp). Sim, o url-pattern /* pode ser utilizado.

4. Deploy

Faça o deployment de sua aplicação web como de costume.

5. Teste

OS seguintes delimitadores / palavras chave do SQL são detectados pelo AntiSQLFilter - utilize-os em suas URLs e formulários HTML para testar sua configuração (verifique o log file do ServletContext):

  • ;
  • "
  • '
  • /*
  • */
  • --
  • exec
  • select
  • update
  • delete
  • insert
  • alter
  • drop
  • create
  • shutdown