したがって、誰かがこのacceptヘッダーを送信した場合:
*/*'"!@$^*\/:;.,?{}[]`~-_<sCrIpT>alert(81363)</sCrIpT>
ジャージーを使用した応答で返されます。これを傍受して逃げる必要があります。私はこれを行う方法を見つけていません。何か助けはありますか?
フィルタを使用してリクエストをインターセプトし、サービスクラスに到達する前にクリーンアップを実行できます。この例を確認してください。
この方法でリクエストヘッダーを読み取り、レスポンスヘッダーを変更できます(リクエストヘッダーを変更することはできません。読み取り専用のマップです)。
@Context HttpHeaders headers;
@Path("yourPath")
public Response yourMethod(){
List<String> accept = headers.getRequestHeader(HttpHeaders.ACCEPT);
if ( accept contains invalid characters)) {
do something
}
//If you set a null value, the header is deleted.
//Anyway, deletion is useless, if you have not yet set
// the Accept header on the response.
return Response.ok().header(HttpHeaders.ACCEPT, null).build();
}