【问题标题】:Check file by format and not by extension按格式而不是扩展名检查文件
【发布时间】:2020-03-30 22:59:59
【问题描述】:

在我的应用程序中,我可以选择附加 pdf、png 文件等。可能有人将扩展名更改为恶意文件并放入 .pdf 或 .png。

我如何通过格式而不是文件扩展名来验证文件是 pdf 或 png,这就是我现在的做法?

我正在这样做:

if(file.endsWith("pdf")){
 //is okey
}else{
 //this is not a pdf file
}

【问题讨论】:

    标签: android file android-studio pdf kotlin


    【解决方案1】:

    所以我通过运行以下命令检查了文件是否为图像:

    final Drawable drawable = BitmapDrawable.createFromPath(realFileName);
    if (drawable != null) {
        // Is an Image
    }
    

    如果您可以使用 API 26+,则可以使用 Files.probeContentType(file.toPath())。这将提供所提供文件的 MimeType。

    最后,您可以使用 Apache Tika 检查文件的前几个字节。我以前没有这样做过,但它看起来像:

    apps build.gradle

    implementation group: 'org.apache.tika', name: 'tika-parsers', version: '1.22'
    

    然后在需要的地方使用:

    Tika tika = new Tika();
    try {
        Log.d(TAG, tika.detect(file));
    } catch (IOException e) {
        e.printStackTrace();
    }
    

    https://tika.apache.org/1.22/index.html

    【讨论】:

    • 请注意,这不会保护您或您的用户免受恶意软件的侵害!应该使用适当的病毒扫描程序(scanii.com 用于 SaaS 版本)来尝试清除 MalWare(它可以很好地隐藏在 PNG 和 PDF 文件中)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 2014-11-08
    相关资源
    最近更新 更多