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

国外网站源码怎么做 社区网站

国外网站源码,怎么做 社区网站,东莞网站制作方案定制,哪里有做外贸网站的方案优势 四重安全校验: 文件扩展名检查MIME类型检测(使用Apache Tika)文件头特征验证可执行文件特征检测 两种集成方式: AOP切面:自动拦截所有包含MultipartFile参数的方法手动调用:灵活控制校验时机 防…

方案优势

  1. 四重安全校验

    • 文件扩展名检查
    • MIME类型检测(使用Apache Tika)
    • 文件头特征验证
    • 可执行文件特征检测
  2. 两种集成方式

    • AOP切面:自动拦截所有包含MultipartFile参数的方法
    • 手动调用:灵活控制校验时机
  3. 防御措施

    • 使用try-with-resources确保流关闭
    • 精确的文件头特征检查(防御伪造文件)
    • 统一的异常处理机制

需要引入依赖

 

<dependency><groupId>org.apache.tika</groupId><artifactId>tika-core</artifactId><version>2.7.0</version>
</dependency>
import org.apache.tika.Tika;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;public class ImageFileValidator {// 允许的MIME类型(使用Set提升查询性能)private static final Set<String> ALLOWED_MIME_TYPES = new HashSet<>(Arrays.asList("image/png","image/jpeg","image/jpg"));// 允许的文件扩展名private static final Set<String> ALLOWED_EXTENSIONS = new HashSet<>(Arrays.asList("png", "jpg", "jpeg"));// 最大文件大小(10MB)private static final long MAX_FILE_SIZE = 10 * 1024 * 1024;// 文件头特征检查(PNG/JPG/JPEG)private static final byte[][] IMAGE_MAGIC_NUMBERS = {{(byte) 0x89, 0x50, 0x4E, 0x47}, // PNG{(byte) 0xFF, (byte) 0xD8, (byte) 0xFF}, // JPEG/JPG};/*** 通用图片文件验证* @param file 上传的文件* @throws IOException 文件读取异常* @throws IllegalArgumentException 校验失败时抛出*/public static void validateImageFile(MultipartFile file) throws IOException, IllegalArgumentException {// 基础检查if (file == null || file.isEmpty()) {throw new IllegalArgumentException("文件不能为空");}// 检查文件大小if (file.getSize() > MAX_FILE_SIZE) {throw new IllegalArgumentException("文件大小不能超过10MB");}// 检查文件扩展名String originalFilename = file.getOriginalFilename();if (originalFilename == null) {throw new IllegalArgumentException("文件名无效");}String fileExtension = getFileExtension(originalFilename).toLowerCase();if (!ALLOWED_EXTENSIONS.contains(fileExtension)) {throw new IllegalArgumentException("仅支持PNG、JPG、JPEG格式文件");}// 使用Tika检测真实MIME类型(防御伪造扩展名)try (InputStream is = file.getInputStream()) {String detectedMimeType = new Tika().detect(is);if (!ALLOWED_MIME_TYPES.contains(detectedMimeType.toLowerCase())) {throw new IllegalArgumentException("非法的文件类型");}// 检查文件头特征if (!isValidImageHeader(is)) {throw new IllegalArgumentException("非法的图片文件格式");}// 恶意文件检测checkForExecutableContent(is);}}/*** 获取文件扩展名*/private static String getFileExtension(String filename) {int lastDot = filename.lastIndexOf(".");return lastDot == -1 ? "" : filename.substring(lastDot + 1);}/*** 验证文件头是否符合图片格式*/private static boolean isValidImageHeader(InputStream is) throws IOException {is.mark(10); // 标记以便重置byte[] header = new byte[4];if (is.read(header) != header.length) {return false;}is.reset();// 检查PNG头if (Arrays.equals(Arrays.copyOf(header, 4), IMAGE_MAGIC_NUMBERS[0])) {return true;}// 检查JPEG头return Arrays.equals(Arrays.copyOf(header, 3), IMAGE_MAGIC_NUMBERS[1]);}/*** 检查可执行文件特征*/private static void checkForExecutableContent(InputStream is) throws IOException {is.mark(1024);byte[] buffer = new byte[1024];int bytesRead = is.read(buffer);is.reset();if (bytesRead > 0) {// PE文件头检查(Windows可执行文件)if (bytesRead > 60 && buffer[0] == 0x4D && buffer[1] == 0x5A) {throw new IllegalArgumentException("检测到潜在有害文件内容");}// ELF文件头检查(Linux可执行文件)if (bytesRead > 4 && buffer[0] == 0x7F && buffer[1] == 0x45 && buffer[2] == 0x4C && buffer[3] == 0x46) {throw new IllegalArgumentException("检测到潜在有害文件内容");}}}
}
http://www.dtcms.com/wzjs/816067.html

相关文章:

  • 网站建设 php 企业网站宁乡网站建设点燃网络
  • wordpress弹幕主题做360手机网站优化
  • 自学建百度首页网站wordpress移动显示
  • 网站在阿里云备案流程企业形象宣传策划方案
  • 手机网站头部代码网页设计实训报告总结与收获
  • 网站安全优化wordpress侧边栏缩略图
  • 用asp做网站需要准备什么免费3d建模软件
  • 房地产网站 模板中国对外建设有限公司网站
  • 网站建设需要掌握什么技术又拍云wordpress
  • 大型集团网站大型网站建设服务公司
  • 各大门户网站dede和wordpress
  • 普洱建设网站网站开发用php好吗
  • 免费网站制作开发公司莱芜网站建设价格低
  • 济宁 做网站织梦网站怎么做404页面模板
  • 专业网站建设信息wordpress多用户插件
  • 购物网站开发会遇到的的问题泗洪住房和城乡建设网站
  • 静态网站开发课程南京平台公司
  • 网站建设行业swot分析做外汇需要关注哪几个网站
  • 阿里云主机上传网站wordpress菜单导航图标图片大全
  • 关于给予网站建设的请求阳泉住房和城乡建设厅网站
  • 网站流量超做网站构架
  • 杭州网站建设浙江seo推广如何做
  • 外贸建站与推广wordpress 文章表格
  • 网站开发 法律声明个人网站做哪些流程
  • 游戏网站设计论文wordpress 去掉category
  • 网站怎么做安全网站源码修改后怎么提交
  • 定制您的专属建站方案免费网站提交入口
  • 织梦网站去除技术支持做视频网站程序多少钱
  • 佛山全网营销型网站建设平面设计跟网站建设
  • 汉中建网站马鞍山网站建设价格