La Biblioteca de Seguridad de Coverity (CSL) es un conjunto liviano de rutinas de escape para arreglar secuencias de comandos entre sitios (XSS), inyección SQL y otros defectos de seguridad en aplicaciones web de Java.
He aquí por qué vale la pena echarle un vistazo:
Es seguro: tomamos en serio la seguridad de CSL. Cada cambio se analiza cuidadosamente a través de un proceso que incluye revisión del código manual, análisis estático, pruebas de fuzz y pruebas unitarias.
Es conveniente: CSL contiene escapadores para la inyección XSS y SQL que faltan en bibliotecas estándar como Apache Commons y Java EE. Utilizamos métodos estáticos rápidos y fáciles de invocar con nombres cortos e intuitivos. También proporcionamos ganchos para el lenguaje de expresión (EL) para que sea fácil de usar dentro de los JSP.
Es pequeño: CSL no tiene dependencias externas y es una biblioteca minimalista. Esto significa que es rápido y no requiere ninguna configuración además de dejar caer un frasco en la ubicación correcta o modificar su compilación para hacerlo.
Es gratis: CSL se distribuye bajo una licencia de estilo BSD. Agradeceríamos que los parches se nos envíen, pero no es necesario.
Los usuarios del asesor de seguridad de la cubierta obtienen una guía de remediación basada en rutinas de escape en CSL. Sin embargo, CSL es un proyecto independiente sin dependencias en el asesor de seguridad.
La clase de escape contiene varios escapadores para contenido web. Estas funciones de escape ayudan a remediar defectos comunes (principalmente secuencias de comandos de sitios cruzados) que ocurren cuando los datos se insertan en el elemento HTML, valores de atributos HTML, URI, cadenas JavaScript, SQL como cláusulas, etc. Más información hay más información disponible en el directorio de escape.
Antes de usar cualquiera de estos métodos, debe comprender el contexto (o contextos anidados) en el que se insertan los datos. Varios ejemplos de maquetas con explicación están disponibles en el repositorio, y estarán más disponibles en nuestro blog. Si desea probar la biblioteca para comprender cómo silba los ataques de seguridad, nuestro TestSuite funcional es la aplicación adecuada para construir/implementar/probar.
Listo para usarlo? Un último paso es echar un vistazo al último Javadoc directamente en GitHub.
Para incluir esta biblioteca en su proyecto Maven, agregue lo siguiente:
< dependency >
< groupId >com.coverity.security</ groupId >
< artifactId >coverity-escapers</ artifactId >
< version >1.1.1</ version >
</ dependency >
O suelte el archivo jar en el directorio WEB-INF/lib
.
Entonces puede usarlo directamente en sus JSP:
<%@ taglib uri = " http://coverity.com/security " prefix = " cov " %>
< script type = " text/javascript " >
var x = ' ${ cov : jsStringEscape(param . tainted) } ' ;
</ script >
< div onclick = " alert(' ${ cov : htmlEscape(cov : jsStringEscape(param . tainted)) } ') " >
${ cov : htmlEscape(param . tainted) }
</ div >
o en sus programas Java:
import com . coverity . security . Escape ;
// ...
return "<div onclick='alert( " "
+ Escape . html ( Escape . jsString ( request . getParameter ( "tainted" )))
+ " " )'>"
+ Escape . html ( request . getParameter ( "tainted" ))
+ "</div>" ;
Para contactar al SRL, envíenos un correo electrónico a [email protected]. ¡Hacer bifurcado, esperamos sus solicitudes de extracción!
Copyright (c) 2012-2016, Coverity, Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.
- Neither the name of Coverity, Inc. nor the names of its contributors may be used
to endorse or promote products derived from this software without specific prior
written permission from Coverity, Inc.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND INFRINGEMENT ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
OF SUCH DAMAGE.