图片传输和图片防遍历技术方案
需求描述:
1.如果用一个接口列表,可能报文太长了,实现URL是短期有效且防遍历的
2.接口文件流,拆两个接口,一个接口返回文件列表,另一个根据文件ID返回文件流
3.如果都是图片,base64通过接口来传输图片也可以。
4.发送端和接收端可以对文件做MD5加密,这样可以验证文件在传输过程中是否被篡改。
1.对用户提交过来的文件名称硬编码或者统一编码,对文件类型进行白名单控制,对包含恶意字符或者空字符的参数进行拒绝。
package com.example.core.mydemo.java; import java.util.regex.Pattern; public class FileNameTest { private static Pattern FilePattern = Pattern.compile("[\\\\/:*?\"<>|]"); public static String filenameFilter(String str){ return str==null?null:FilePattern.matcher(str).replaceAll(""); } public static void main(String[] args) { System.out.println("str1=" + filenameFilter("aaa.txt")); System.out.println("str2=" + filenameFilter("bb\\a?*.txt")); System.out.println("str3=" + filenameFilter("cc/:a.txt")); System.out.println("str4=" + filenameFilter("dd\"a.txt")); System.out.println("str5=" + filenameFilter("[ee<>|a].txt")); } }
output:
str1=aaa.txt
str2=bba.txt
str3=cca.txt
str4=dda.txt
str5=[eea].txt