簡體   English   中英

文件下載在使用 ESAPI 庫時不起作用

[英]File download is not working in using the ESAPI library

我正在使用 ESAPI 下載文件(出於安全原因,只接受 ESAPI)。 所以請找到我下面的代碼。

response.setContentType("application/msexcel");

ESAPI.httpUtilities().addHeader(response, "Content-Disposition", "attachment; filename=testfile.xls");

當我點擊下載時,下載的文件帶有正確的內容,但文件擴展名和文件名不可接受。

示例:當我單擊以下 url 時:http://localhost:8080/searchTest

上述情況下的預期文件名:testfile.xls

下載的實際文件名是:searchTest
(其中“searchTest”是網址)

有人可以幫助我了解如何在 ESAPI 中傳遞文件名和擴展名嗎?

提前致謝,
哈利

我並沒有真正看過這么多,它可能沒有任何區別(至少如果你使用微軟瀏覽器來測試這個),但我正確的 HTTP 響應 header 值Content-Type for downloading.xls Excel 文件是“ application/vnd.ms-excel ”而不是“ application/msexcel ”。 所以,我會先嘗試一下,以防萬一。 [有關 .xlsx 格式的更多詳細信息,請參閱 https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types。]

其次,您能否通過更改代碼以在沒有 ESAPI 的情況下嘗試它來確認確實是 ESAPI 導致了此問題? 例如,

response.addHeader("Content-Disposition", "attachment; filename=testfile.xls");

並重新測試。 (從技術上講,由於您的Content-Disposition header 中沒有受污染的輸入,因此對於這種特殊情況,您確實不需要ESAPI,盡管如果您接受用戶提供的文件名,那將會改變。)如果它仍然沒有沒有 ESAPI 就無法工作,你至少知道不是 ESAPI 導致了它,這是值得的。 同樣,如果它是由 ESAPI 引起的。

最后,我要檢查的另一件事是確保您沒有多個Content-TypeContent-Disposition響應標頭返回到用戶的瀏覽器。 您可以通過 OWASP ZAP 或 Portswigger 的 Burp Suite 等攔截代理或使用瀏覽器的內置開發工具(例如,Chrome 中的 F12;不確定 Firefox 的快捷方式)來檢查它。 如果有多個具有不同值的 Content-Type 標頭或 Content-Disposition 標頭,這也可能導致您所觀察到的情況。

無論如何,讓我們知道您發現了什么,我們可以嘗試進一步幫助您。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM