当前位置: 首页 > news >正文

恐龙网站建设阳江兼职招聘网最新招聘

恐龙网站建设,阳江兼职招聘网最新招聘,网络推广项目计划书,动漫在线设计平台java任意文件漏洞修复#xff0c;使用文件魔数解决 背景#xff1a; 客户进行渗透测试#xff0c;验证上传文件的程序没有对上传文件作任何过滤#xff0c;导致可以上传任意文件到服务器#xff0c;甚至是病毒文件和Webshell木马文件。 解决办法#xff1a;对于上传的附件… java任意文件漏洞修复使用文件魔数解决 背景 客户进行渗透测试验证上传文件的程序没有对上传文件作任何过滤导致可以上传任意文件到服务器甚至是病毒文件和Webshell木马文件。 解决办法对于上传的附件验证程序要做严格验证使用服务器端校验而不能仅用前端验证。 代码实例 // 允许上传文件后缀 private static final String[] ALLOWED_FILE_EXTENSIONS {jpg, jpeg, png, gif, doc, docx, xls, xlsx, pdf, ppt, pptx}; // 允许上传文件头魔数十六进制字符串 private static final ListString ALLOWED_MAGIC_NUMBERS Arrays.asList(FFD8FF, 89504E47, 47494638, 25504446, D0CF11E0, 504B0304 ); // JPEG (jpg),PNG (png),GIF (gif),pdf,(doc、xls、ppt),(xls、pptx)// 允许上传文件的MIME类型 private static final SetString ALLOWED_MIME_TYPES new HashSet(); static {ALLOWED_MIME_TYPES.add(image/jpeg); // jpg, jpeg ALLOWED_MIME_TYPES.add(image/png); // png ALLOWED_MIME_TYPES.add(image/gif); // gif ALLOWED_MIME_TYPES.add(application/msword); // doc ALLOWED_MIME_TYPES.add(application/vnd.openxmlformats-officedocument.wordprocessingml.document); // docx ALLOWED_MIME_TYPES.add(application/vnd.ms-excel); // xls ALLOWED_MIME_TYPES.add(application/vnd.openxmlformats-officedocument.spreadsheetml.sheet); // xlsx ALLOWED_MIME_TYPES.add(application/pdf); // pdf ALLOWED_MIME_TYPES.add(application/vnd.ms-powerpoint); // pptALLOWED_MIME_TYPES.add(application/vnd.openxmlformats-officedocument.presentationml.presentation); // pptx } SuppressWarnings(unchecked) protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding(UTF-8);String fileType;// 1.创建文件上传工厂类DiskFileItemFactory fac new DiskFileItemFactory();// 2.创建文件上传核心类对象ServletFileUpload upload new ServletFileUpload(fac);// 【一、设置单个文件最大1024M】upload.setFileSizeMax(1024 * 1024 * 1024);// 1024MM// 【二、设置总文件大小2048M】upload.setSizeMax(2048 * 1024 * 1024); // 2048MListString StringArrnew ArrayListString();// 判断当前表单是否为文件上传表单if (upload.isMultipartContent(request)) {try {// 3.把请求数据转换为FileItem对象的集合ListFileItem list upload.parseRequest(request);Calendar calendar Calendar.getInstance();int year calendar.get(Calendar.YEAR);// 遍历得到每一个上传项for (FileItem item : list) {// 判断是普通表单项还是文件上传表单项if (item.isFormField()) {// 普通表单xString fieldName item.getFieldName();// 获取元素名称String value item.getString(UTF-8); // 获取元素值fileTypevalue;System.out.println(fieldName : value);} else {// 文件上传表单//文件保存目录路径String savePath getServletContext().getRealPath(/) uploadFiles/wjgl/fileType/year/;File uploadFile new File(savePath);if (!uploadFile.exists()) {uploadFile.mkdirs();}String oldname item.getName(); // 上传的文件名称String fileExtension item.getName().substring(item.getName().lastIndexOf(.) 1);//获取到文件后缀if (!Arrays.asList(ALLOWED_FILE_EXTENSIONS).contains(fileExtension)) {//验证文件后缀response.setStatus(500);throw new FileUploadException(if1无效的文件扩展名: fileExtension);}String contentType item.getContentType();if(!ALLOWED_MIME_TYPES.contains(contentType)){response.setStatus(500);throw new FileUploadException(if2无效的文件扩展名: fileExtension);}if (!isFileValid(item)) {// 文件有效进行处理response.setStatus(500);throw new FileUploadException(被改了后缀判断文件内容魔术无效的文件扩展名: fileExtension);}//时间戳String timeString.valueOf(new Date().getTime());String name timeoldname;// 【三、上传到指定目录获取上传目录路径】String realPath uploadFiles/wjgl/fileType/year/;// 创建文件对象File file new File(savePath, name);item.write(file);item.delete();response.setContentType(application/json);response.setCharacterEncoding(UTF-8);JSONObject obj new JSONObject();obj.put(fileName, oldname);obj.put(filePath, realPath name);StringArr.add(obj.toString());}}response.getWriter().println(StringArr);} catch (Exception e) {e.printStackTrace();}} else {System.out.println(不处理);}}//校验是否为jpg,jpeg,png,gif,doc,docx,xls,xlsx,pdf,pptx格式 public static boolean isFileValid(FileItem fileItem) throws IOException {String fileName fileItem.getName();try (InputStream inputStream fileItem.getInputStream()) {return isValidFileMagicNumber(inputStream);} } //验证文件魔数 public static boolean isValidFileMagicNumber(InputStream inputStream) throws IOException {boolean blfalse;byte[] buffer new byte[8];inputStream.read(buffer, 0, 8);String hexMagicNumber bytesToHex(buffer);for(int i 0; iALLOWED_MAGIC_NUMBERS.size(); i){String msALLOWED_MAGIC_NUMBERS.get(i);if(hexMagicNumber.toUpperCase().startsWith(ms)){bltrue;break;}}return bl; } //字节转换16进制 private static String bytesToHex(byte[] bytes) {StringBuilder hexString new StringBuilder();for (byte b : bytes) {hexString.append(String.format(%02X, b));}return hexString.toString(); }
http://www.zqtcl.cn/news/70880/

相关文章:

  • 从零开始做网站内容运营手机网站怎么写
  • 天河网站建设方案html 网站模板下载
  • 变性人做网站上海建设银行网站转账记录查询
  • 违法网站开发者在线广告设计制作
  • 做网站需要哪些审核学网站建设的工资高吗
  • 湛江公司做网站网站营销软件
  • 网站快速优化排名方法ui交互设计是什么
  • 深圳营销网站建设模板wordpress 多说 社交登陆
  • 网站做ppt模板python开发一个wordpress
  • 崇文门网站建设邢台微信群
  • 网站建设原则应考虑哪些方面vue快速建站
  • 网站开发哪些专业什么网站可以帮人做ppt赚钱
  • 做网站播放未上映的电影淘宝官网网页版淘宝网
  • 网站锚点怎么做网站前台设计
  • 舞钢市城市建设局网站中关村在线小程序
  • 山西免费网站关键词优化排名网页设计页面布局模板
  • 没有网站怎么做链接视频教程创建企业网站
  • 眼科医院网站设计怎么做6asp个人网站模板
  • 园林网站模板下载机关单位网站建设合同
  • 餐饮团购网站建设电脑网站上的电影怎么下载
  • 上海做网站比较好的公司有哪些建e网手机版
  • 自己怎么拍做美食视频网站辽宁省大学生创新创业平台
  • 做网站 怎么谈网页传奇游戏大全
  • 环球贸易网站成全视频免费观看在线看动画
  • 北京软件外包重庆百度seo整站优化
  • 建旅游网站的意义wordpress 如果分类
  • 网站建站网站建站网站营销的重点
  • 如何做阿里巴巴国际网站视频播放网站 模板
  • 设计联盟网站什么是网络营销品牌
  • 建立个人网站怎么赚钱东城区网站建设公司