Coverity Security Library(CSL)は、Java Webアプリケーションのクロスサイトスクリプティング(XSS)、SQLインジェクション、およびその他のセキュリティ欠陥を修正するための軽量の脱出ルーチンのセットです。
これがチェックアウトする価値がある理由です:
安全です: CSLのセキュリティを真剣に受け止めています。すべての変更は、手動コードレビュー、静的分析、ファズテスト、および単体テストを含むプロセスを通じて慎重に精査されます。
便利です。CSLには、Apache CommonsやJava EEなどの標準ライブラリから欠落しているXSSおよびSQLインジェクションのエスケーパーが含まれています。短くて直感的な名前で静的なメソッドを呼び出す高速で簡単に使用できます。また、JSPS内で使いやすくするために、表現言語(EL)のフックを提供します。
小さい: CSLには外部依存関係がなく、ミニマリストライブラリです。これは、適切な場所に瓶をドロップしたり、ビルドを変更したりする以外に、速く、構成を必要としないことを意味します。
無料: CSLはBSDスタイルのライセンスの下で配布されます。パッチが返送されていることをお勧めしますが、必須ではありません。
Coverity Security Advisorのユーザーは、CSLの逃亡ルーチンに基づいて是正ガイダンスを取得します。ただし、CSLはセキュリティアドバイザーに依存しないスタンドアロンプロジェクトです。
エスケープクラスには、Webコンテンツ用のいくつかのエスケーパーが含まれています。これらの脱出機能は、データがHTML要素、HTML属性値、URI、JavaScript文字列、句などのSQLに挿入されたときに発生する一般的な欠陥(主にクロスサイトスクリプト)を改善するのに役立ちます。
これらのメソッドを使用する前に、データが挿入されるコンテキスト(またはネストされたコンテキスト)を理解する必要があります。説明付きのいくつかのモックアップの例がリポジトリで入手できますが、ブログではその他が入手できます。ライブラリをテストして、セキュリティ攻撃がどのように攻撃されるかを理解したい場合は、機能テストスイートがビルド/展開/テストに適したアプリです。
それを使用する準備はできましたか?最後のステップの1つは、GitHubで直接最新のJavadocを見ることです。
このライブラリをMavenプロジェクトに含めるには、以下を追加してください。
< dependency >
< groupId >com.coverity.security</ groupId >
< artifactId >coverity-escapers</ artifactId >
< version >1.1.1</ version >
</ dependency >
または、JARファイルをWEB-INF/lib
ディレクトリにドロップします。
その後、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 >
またはあなたの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.