验证 java 中的文件类型,停止将可执行文件上传到数据库?

Validation on file type in java, Stop executable file from uploaded into Database?

我通过获取文件扩展名添加了对文件类型的基本检查 因为这些都是允许的文件类型,其余的都被阻止。

  if (fileExtension.toLowerCase().equals("jpg") || fileExtension.toLowerCase().equals("png") || fileExtension.toLowerCase().equals("gif") || fileExtension.toLowerCase().equals("jpeg")) {
    return true;
    }

问题是,如果黑客上传一个伪装成 .jpg 的 .exe 文件,然后 拦截此请求,并在验证检查后将 .jpg 更新为 .exe,那么他可能能够在非常危险的数据库,因为脚本将被执行。 那么如何阻止.exe上传

您可能需要根据扩展名检查文件内容。为此,可以使用像 apache-tika 这样的第三方库。 https://medium.com/@ericfossas/quick-tut-file-type-detection-apache-tika-13967d453f42

问题已解决。

我创建了 apache tika 返回的魔术字节和 mime 类型的白名单,并添加了对它们的检查。 感谢大家的帮助