Buscando experiencia con controles integrados y personalizados.
No necesito referencias a analizadores de código fuente comerciales.
Buscando experiencia con controles integrados y personalizados.
No necesito referencias a analizadores de código fuente comerciales.
Para tener un conjunto de reglas más completo, puede usar el complemento FindBugs Buscar errores de seguridad . Incluye 36 nuevos detectores. Por supuesto, el complemento genera algunos falsos positivos, pero siempre puede desactivar detectores específicos.
Descargo de responsabilidad : soy el autor de la mención de la herramienta
checkstyle compara el código con los estándares de codificación: puede usar el estándar de Sun / Oracle o incluso usar el suyo propio. Realmente no encuentra vulnerabilidades como tales, aunque será más difícil encontrar vulnerabilidades si el código no cumple con sus estándares de codificación.
Findbugs encontrará inyecciones de SQL, contraseñas de bases de datos codificadas, vulnerabilidades del código XSS, creación incorrecta de cookies y ese tipo de cosas. Es personalizable para que pueda agregar más reglas propias o de otra parte.
SIN EMBARGO. Eso es solo una parte de la historia. En mi opinión, el beneficio real de usar checkstyle, pmd y findbugs es que puede reportar visualmente los hallazgos utilizando la herramienta de código abierto Sonar . Esto le dará una visión general de la calidad del código para que pueda acumular recursos para corregir el peor código ofensivo. Le permite ampliar visualmente cada biblioteca y luego ubicarse en los peores delincuentes. Esto es particularmente bueno en proyectos grandes o cuando confía en varios equipos de desarrollo.
Ninguno, checkstyle es para el formato de código y las reglas de cohesión / acoplamiento de código en su código. Es decir. ningún archivo debe ser más largo que, ningún método puede ser más largo que etc. En cuanto a findbugs es buscar errores comunes de software, no específicos de seguridad. Los cheques comunes son vars no utilizados, condiciones ommited y así sucesivamente. Es bastante difícil verificar el software en busca de vulnerabilidades de seguridad, excepto de B / O común. Y los analizadores estáticos están limitados en su funcionalidad.
En cuanto a las vulnerabilidades de los códigos móviles (es decir, cuando se intenta garantizar que un código de menor confianza pueda utilizar de forma segura un código de confianza, que generalmente se descarga dinámicamente en la web), FindBugs encuentra algunas vulnerabilidades estáticas mutables. Realiza algunos informes excesivos debido a que no comprende la propiedad de seguridad "package.access"
. Está masivamente debajo de los informes porque no es muy bueno detectar cuándo se puede acceder indirectamente a una estática mutable oculta por modificadores de acceso (o package.access), aunque ha mejorado modestamente en esa área.
Creo que hay algunos intentos de detectar los gustos de la inyección SQL. En mi opinión, si tiene alguna vulnerabilidad de inyección, está en un lugar muy malo para empezar.
Por lo que yo sé, ningún analizador de Java estático es muy distinto de la detección estática mutable mencionada anteriormente. Eso y grep
( grep -R java.lang.reflect. .
, por ejemplo). Dicho esto, en mi experiencia, la calidad del código general es la base del software seguro, y los analizadores estáticos (incluido el hecho por su compilar) pueden tener un pequeño papel que desempeñar.
Lea otras preguntas en las etiquetas source-code java code-review