簡體   English   中英

如何解決在Java代碼中創建具有指定名稱的文件時的安全漏洞?

[英]How to solve a security break in creating File with a specified name in Java code?

安全碼掃描不喜歡以下Java代碼:

File localCsvFile = new File(MessageFormat.format(REPORT_ZIP_PATH_FORMAT,
            REPORT_LOCAL_PATH, str1, str2, count));

根據掃描,問題如下:

該軟件允許用戶輸入來控制或影響文件系統操作中使用的路徑或文件名。 這可能允許攻擊者訪問或修改對應用程序至關重要的系統文件或其他文件。

解決這個問題的最佳方法是什么? 我在 Spring Boot Java 應用程序中。 建議的解決方案之一是使用 AccessReferenceMap,它是如何工作的?

OWASP 安全指南中討論了此問題。 根據應用程序的主機操作系統,解決方案可能略有不同,但這里有一些通用准則 -

  • 如果可能,盡量避免從用戶那里獲取文件路徑。 在不要求用戶輸入服務器上的路徑的情況下評估是否有任何替代解決方案。 我沒有你的場景的完整背景,但大多數時候它是可以實現的。 也許您可以根據用戶 ID 將報告存儲在服務器路徑上,例如 user1 文件將存儲在 /user/tmp/user1 下,這將消除要求用戶輸入完整路徑或絕對路徑的情況。

  • 在服務器端盡可能驗證用戶輸入。 這將盡可能限制用戶訪問。 例如,如果希望用戶訪問 pdf,則添加驗證以檢查用戶輸入數據以.pdf結尾

  • 切勿將用戶輸入直接傳遞給文件系統 API。 在將其發送到文件系統 API 之前,使用預定義的路徑為其添加前綴。

  • 確保您的文件系統 API 正在讀取/寫入受限制的操作系統用戶,該用戶有權訪問您僅存儲用戶所需文件的特定路徑。

您可以在此處閱讀有關此漏洞和解決方案的更多信息

暫無
暫無

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

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