Pergunta

Eu estou trabalhando para um cliente com uma enorme base de código legado que consiste de várias aplicações baseadas em Java en JSP.

A maioria consulta é feita usando o sistema de casa-build 'ORM'. Alguns aplicativos usam Plain Old JDBC. Alguns aplicativos são baseados em Hibernate (construção sim HQL com sinais de mais é um problema em potencial também). Alguns dos aplicativos mais antigos são inteiramente escrito em JSP.

Eu encontrei um par de erros injetar SQL manualmente. Mas eu poderia realmente usar algum tipo de ferramenta de pesquisa para potenciais pontos fracos.

Todas as idéias?

Foi útil?

Solução

Eu recomendaria FindBugs (há também um plugin do Eclipse), que pode rastrear estas questões e muito mais .

Estamos a usá-lo no trabalho, é rápido e vale a pena o dinheiro (como na livre). Nós resolvemos alguns problemas comuns com a sua ajuda.

Outras dicas

eu escrever algumas pesquisas ou carregar uma IDE que olhou para o uso de java.sql.Statement em oposição a PreparedStatement.

Como grande é o seu espaço URL? Se possível, é melhor para tentar injeção SQL através de solicitações HTTP POST GET e. Existem alguns problemas que podem ser encontrados através do exame de código-fonte / byte, mas a única maneira de saber ao certo o que tipos de entrada potencialmente malicioso sua aplicação vai aceitar é a utilização de solicitações HTTP.

CAL9000 é uma / ferramenta de teste de Scripting Injeção SQL boa Cross-site se o seu conjunto de URLs é pequena.

As empresas que são sérios sobre a detecção de entrada maliciosa maltratado vai contratar um 3o partido para fazer testes de penetração. White Hat Segurança é um fornecedor com quem trabalhei no passado e pode recomendar. Nós utilizado para um web site de e-commerce $ 100MM +. (Eu não tenho nenhuma afiliação com chapéu branco e não beneficiam de qualquer forma, se você se tornar seu cliente.)

Todos os testes / endurecimento do seu código de lado, é uma idéia muito boa para ter um HTTP firewall no lugar como mod_security .

Quando eu estava trabalhando na localização de "this-vai-não-necessidade-localização" aplicativo, usamos uma ferramenta caseira para analisar o código compilado (IL em .NET, é igual ao byte-code em Java) .

Você pode encontrar chamando os métodos especificados que trabalha com DB (typicaly operações CRUD) Wicht tem um parâmetro de cadeia com o comando SQL, e acompanhar a instância corda e verificar o concating.

Foi utilizado o .NET Reflector para decompiling e acompanhamento de cordas. Mas eu não sei, se é uma ferramenta similar disponível para Java:. (

Você pode ir para a prevenção ao invés de cura. adicionar uma camada de sanitização logo abaixo ur UI, assim você não vai acabar com SQL / scripts em entradas do usuário. Deve haver exemplos em Java, eu vi uma tal abordagem no CakePHP

Encontre qualquer lugar que não usa um PreparedStatement.

Eu recomendo CAL9000. Você pode obter detalhes a partir do seguinte link:

CAL9000

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top