FileOutputStream fos;
HSSFWorkbook wb= new HSSFWorkbook();
wb=aaaaa.getExportXLS(request, response, fileName, wb);
fos=new FileOutputStream(uploadDir+File.separator+fileName);
wb.write(fos);
File fileXls=new File(uploadDir+File.separator+fileName);
fileInuptStream = new FileInputStream(fileXls);
bufferedInputStream = new BufferedInputStream(fileInuptStream);
byteArrayOutputStream = new ByteArrayOutputStream();
byte [] buffer = new byte [length];
while ((offset = bufferedInputStream.read(buffer, start, length)) != -1)
byteArrayOutputStream.write(buffer, start, offset);
buffer = byteArrayOutputStream.toByteArray();
response.setHeader("Expires", "0");
response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
response.setHeader("Pragma", "public");
response.setContentType("application/xls");
response.setHeader("Content-disposition","attachment; filename="+fileName );
response.setContentLength((int ) fileXls.length());
response.getOutputStream().write(buffer);
私はこのコードを持っています。構文が response.getOutputStream().write(buffer); の行。xss 攻撃に対して脆弱であるという問題が報告されています。レポートは、クライアント側のコード監査ツールからのものです。配信されるメッセージには、「ファイル (「バッファー」) からサーブレット応答へのデータの注入 (XSS 攻撃の可能性)」と書かれています。修正方法がわかりませんか?前もって感謝します。
さらに数時間作業した後、報告された問題がファイル ダウンロード インジェクションであることがわかりました。そして解決策は、メソッドを使用したESAPIにあります
ESAPI.httpUtilities().setHeader().
しかし、私はこの方法について2つの場所と研究論文で知ったように、この方法に関するより多くの情報と使用法の詳細が必要です
ESAPI.httpUtilities().safeSetHeader("Content-Disposition",
"attachment; filename=" + fn );
上記のメソッドの実装は存在せず、setHeader メソッドを提案しています。この種の問題と実装されたソリューションについて、以前に経験したことがある人はいますか。あなたの経験/解決策/提案を共有してください。