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