我正在用Java编写程序,并且已经意识到它很容易遍历路径。如何更改下面的代码以防止这种情况?
String file = request.getParameter("file");
String downloadPath = DOWNLOAD_PATH + "/" + file;
File downloadFile = new File(downloadPath);
https://find-sec-bugs.github.io/bugs.htm
我已经看过上面的链接,但是在更好地更改代码方面还没有成功。
我建议您添加以下检查并在代码进入块时引发异常
if (file.contains("../") || file.contains("..\\"))
如果要使用提供的链接的代码,则应将代码的最后一行替换为
File downloadFile = new File(DOWNLOAD_PATH, FilenameUtils.getName(file));
注意,您应该导入Apache Commons IO中包含的org.apache.commons.io.FilenameUtils
。如果您的项目是maven项目,请添加以下maven repository 。否则,您需要下载jar并将其放入类路径中。