CSL (Coverity Security Library)은 Java 웹 애플리케이션의 크로스 사이트 스크립팅 (XSS), SQL 주입 및 기타 보안 결함을 수정하기위한 가벼운 탈출 루틴 세트입니다.
확인할 가치가있는 이유는 다음과 같습니다.
안전합니다 : 우리는 CSL의 보안을 진지하게 받아들입니다. 수동 코드 검토, 정적 분석, 퍼지 테스트 및 단위 테스트가 포함 된 프로세스를 통해 모든 변경 사항이 신중하게 면밀히 조사됩니다.
CSL에는 Apache Commons 및 Java EE와 같은 표준 라이브러리에서 누락 된 XSS 및 SQL 주입 에스카 퍼가 포함되어 있습니다. 우리는 짧고 직관적 인 이름으로 정적 메소드를 호출하기 위해 빠르고 쉽게 사용합니다. 또한 JSP 내에서 쉽게 사용할 수 있도록 EL (Expression Language)에 대한 후크를 제공합니다.
작습니다 : CSL에는 외부 의존성이 없으며 미니멀리스트 라이브러리입니다. 이것은 빠르며 올바른 위치에 항아리를 떨어 뜨리거나 빌드를 수정하는 것 외에도 구성이 필요하지 않음을 의미합니다.
무료 : CSL은 BSD 스타일 라이센스로 배포됩니다. 패치가 우리에게 돌려 보내 주셔서 감사하지만 필요하지 않습니다.
Coverity Security Advisor의 사용자는 CSL의 탈출 루틴을 기반으로 치료 지침을 얻습니다. 그러나 CSL은 보안 보좌관에 의존하지 않는 독립형 프로젝트입니다.
탈출 클래스에는 웹 컨텐츠에 대한 여러 탈출구가 포함되어 있습니다. 이러한 이스케이프 함수는 데이터가 HTML 요소, HTML 속성 값, URI, JavaScript 문자열, Clauses 등 SQL에 삽입 될 때 발생하는 일반적인 결함 (주로 크로스 사이트 스크립팅)에 도움이됩니다. 자세한 내용은 Escape Directory에서 사용할 수 있습니다.
이러한 방법을 사용하기 전에 데이터가 삽입되는 컨텍스트 (또는 중첩 컨텍스트)를 이해해야합니다. 설명이 포함 된 몇 가지 모형 예제는 저장소에서 제공되며 블로그에서 더 많이 제공됩니다. 보안 공격을 휘두르는 방법을 이해하기 위해 라이브러리를 테스트하려면 기능 테스트 수영장이 구축/배포/테스트하기에 적합한 앱입니다.
사용할 준비가 되셨습니까? 마지막 단계 중 하나는 Github의 최신 Javadoc을 직접 살펴 보는 것입니다.
이 라이브러리를 Maven 프로젝트에 포함 시키려면 다음을 추가하십시오.
< dependency >
< groupId >com.coverity.security</ groupId >
< artifactId >coverity-escapers</ artifactId >
< version >1.1.1</ version >
</ dependency >
또는 WEB-INF/lib
디렉토리에 JAR 파일을 삭제하십시오.
그런 다음 JSPS에서 직접 사용할 수 있습니다.
<%@ 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 >
또는 Java 프로그램에서 :
import com . coverity . security . Escape ;
// ...
return "<div onclick='alert( " "
+ Escape . html ( Escape . jsString ( request . getParameter ( "tainted" )))
+ " " )'>"
+ Escape . html ( request . getParameter ( "tainted" ))
+ "</div>" ;
SRL에 문의하려면 [email protected]으로 이메일을 보내주십시오. 포크 멀리, 우리는 당신의 풀 요청을 기대합니다!
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.