4
    String id = request.getParameter("id") != null ? request.getParameter("id") : "0";
            aaaa doc = bbb.getdetailsById(id);    
            byte b[] = doc.getUploaded();        
            try {
                response.setContentType("APPLICATION/OCTET-STREAM");
                String disHeader = "Attachment;Filename=" + doc.getName();
                response.setHeader("Content-Disposition", disHeader);
                servletoutputstream = response.getOutputStream();
                servletoutputstream.write(b, 0, b.length);
}

私はこのコードを持っています。コード監査ツールは、servletoutputstream.write(b、0、b.length);と言っています。xssは脆弱です。しかし、私はそれが同じことをどのように報告しているかについての手がかりを持っていません。とそれを修正する方法。ESAPIを使用して入力を検証し、他のxssの脆弱な報告された問題で出力をエスケープしています。これらにも同じことをする必要がありますか?提案や解決策を教えてください。いくつかの調査作業を行った後、ESAPIを使用してhtmlESCAPEまたはxmlESCAPEのバイトb[]をエスケープする必要があることがわかりました。それは問題を解決しますか?

4

3 に答える 3

1

たとえば、ESAPIを使用して入力'id'を検証します。ESAPIを使用して、FILEDOWNLOADINJECTIONのfileNameを検証します。また、ESapiを使用してgetVAlidatedFileContent()を使用してバイトb[]を検証します。

これは、STORED XSSVULNERABILITYISSUEのケースです。

于 2012-06-29T09:58:50.063 に答える
1

getUploaded()ハッカーによってアップロードされたJavaScriptコードを返す場合<script>alert('hi')</script>、問題が発生する可能性があります。

以下のソリューションを試して、フレームワークに付属する文字列をフォーマットできますSpring

HtmlUtils.htmlEscape("<script> alter(''hi)</script>")

出力:

&lt;script&gt; alter(''hi)&lt;/script&gt

JSTLライブラリを使用して、を含む文字列をフォーマットすることもできますjavascript

public static byte[] getFormatedString(byte[] string){

    String str=new String(string);
    str=HtmlUtils.htmlEscape(str);
    return str.getBytes();

}

あなたのコード:

String id = request.getParameter("id") != null ? request.getParameter("id") : "0";
    aaaa doc = bbb.getdetailsById(id);    
    byte b[] = doc.getUploaded();        
    try {
        response.setContentType("APPLICATION/OCTET-STREAM");
        String disHeader = "Attachment;Filename=" + doc.getName();
        response.setHeader("Content-Disposition", disHeader);
        servletoutputstream = response.getOutputStream();
        servletoutputstream.write(getFormatedString(b), 0, b.length);
于 2012-06-19T07:36:00.753 に答える
0

Spring MVCを使用する場合、次のように有効化される目的の機能があります。

<context-param>
    <param-name>defaultHtmlEscape</param-name>
    <param-value>true</param-value>
</context-param>

ここに手がかりがあります

2番目の手がかり

于 2012-06-19T07:21:45.860 に答える