4

企業の Web サイトの脆弱性ツールを使用して実行されたジャージー アプリがあります。それは非常に奇妙な脆弱性を持って戻ってきました。このヘッダーを送信する場合:

"*/*'"!@$^*\/:;.,?{}[]`~-_<sCrIpT>alert(81363)</sCrIpT>"

ジャージから BODY にエラー メッセージが返されます。

The HTTP header field "Accept" with value "*/*'"!@$^*\/:;.,?{}[]`~-_<sCrIpT>alert(56224)</sCrIpT>" could not be parsed.

これは、当社のセキュリティ チームには受け入れられません。それは正しい「テキスト/プレーン」として返されますが、メッセージを変更する必要があります。これを行う方法はありますか?

これは Tomcat で実行されており、Jersey 1.14 を使用しています。

4

1 に答える 1

2

これは、ジャージー チームの Pavel からのものです。

エンティティをサーブレット フィルターからパージできる必要があります。または、Jersey に ContainerResponseFilter を次のように登録できます。

public class PurgeErrorEntityResponseFilter implements ContainerResponseFilter {
    @Override
    public ContainerResponse filter(ContainerRequest request, ContainerResponse response) {
        if(response.getStatus() == 400) {
            response.setEntity(null);
        }
        return response;
    }
}

および web.xml:

 <init-param>
       <param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
       <param-value>x.y.z.PurgeErrorEntityResponseFilter</param-value>
   </init-param>

これは私にとってはうまくいきました。これは私がしました:

response.setEntity(StringEscapeUtils.escapeHtml(response.getEntity().toString()));

エラーメッセージをエスケープしました。ありがとうパベル!

于 2012-10-04T17:04:31.290 に答える