public String singleFileUpload( MultipartFile file, RedirectAttributes redirectAttributes) {
try {
byte[] bytes = file.getBytes();
Path dir = Paths.get(UPLOADED_FOLDER);
Path path = Paths.get(UPLOADED_FOLDER + file.getOriginalFilename());
Files.write(path, bytes);
redirectAttributes.addFlashAttribute("message","上传文件成功:" + path + "");
} catch (Exception e) {
return e.toString();
}
return "redirect:upload_status";
}
public String singleFileUploadSafe( ("file") MultipartFile file,
RedirectAttributes redirectAttributes) {
try {
byte[] bytes = file.getBytes();
String fileName = file.getOriginalFilename();
Path dir = Paths.get(UPLOADED_FOLDER);
Path path = Paths.get(UPLOADED_FOLDER + file.getOriginalFilename());
// 获取文件后缀名
String Suffix = fileName.substring(fileName.lastIndexOf("."));
String[] SuffixSafe = {".jpg", ".png", ".jpeg", ".gif", ".bmp", ".ico"};
boolean flag = false;
for (String s : SuffixSafe) {
if (Suffix.toLowerCase().equals(s)) {
flag = true;
break;
}
}
if (!flag) {
return "只允许上传图片,[.jpg, .png, .jpeg, .gif, .bmp, .ico]";
}
-
必须在服务器端采用白名单方式对上传或下载的文件类型、大小进行严格的限制。
-
仅允许业务所需文件类型上传,避免上传.jsp、.jspx、.html、.exe等文件。
https://github.com/j3ers3/Hello-Java-Sec
原文始发于微信公众号(Reset安全):Java代码审计:文件上传
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论