Код Java веб-приложение, возвращаясь с пути обхода проблемы. Как исправить эту/эти ошибки безопасности?
Поэтому при тестировании базового веб-приложения java, которое я создаю, при тестировании на наличие ошибок возникает проблема, которая возвращается. В строке 28(код-String file = request.getparameter) есть ошибка, называемая "относительный обход пути", а в строке 30(2 строки вниз от запроса) ошибка называется "обход пути в" (эти ошибки связаны с безопасностью, а не функциональностью).
Я немного смущен, почему это не безопасно, но я знаю, как это не безопасно. Злоумышленник может возиться с url-адресом, чтобы добраться до других файлов в каталоге, в который они не должны быть в состоянии попасть, и делать плохие вещи.
public class FileDownload extends HttpServlet { private String DOWNLOAD_PATH = new File(".").getCanonicalPath() + "/webapps/webapp/app/download"; public FileDownload() throws IOException { } public void init() throws ServletException { //To Do } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String file = request.getParameter("file"); File downloadPath = DOWNLOAD_PATH + "/" + file; File downloadFile = new File(downloadPath, Filenameutils.getName(file)); if (downloadFile.exists()) { response.setContentType("application/octet-stream"); response.setHeader("Content-disposition", "attachment; filename="+ downloadFile.getName()); FileInputStream fis = new FileInputStream(downloadFile); byte[] data = new byte[(int) downloadFile.length()]; fis.read(data); fis.close(); OutputStream out = response.getOutputStream(); out.write(data); out.flush(); } else response.sendError(404); }
Мне нужно сделать его безопасным, но я не уверен, как это сделать после поиска в интернете об уязвимостях. Есть ли у кого-нибудь опыт в подобных проблемах с файлами?
Что я уже пробовал:
Я пытался изменить Расширения имен файлов и т. д., но безрезультатно. Может ли кто-нибудь подсказать, в чем проблема и как удалить ошибки безопасности?
Заранее спасибо :D