如何解决JAVA-是否可以检测文档是否包含恶意脚本?
我正在开发一种功能,用户可以在系统中上传文档[PDF,JPG,PNG,GIF]。我正在验证文件的大小,类型,名称和上载文件数的限制。
我正在使用Apache tika库基于文件中的几个字节来检测文档的类型。因此,如果我有一个文件abc.js
,并将其重命名为abc.pdf
,API将不会接受它。
但是,可以在有效字节后将脚本添加到映像中。在这种情况下,类型是可接受的文件类型之一。
有没有一种方法可以解析和检查实际的文档内容,并检查其中是否包含恶意内容,例如Javascript /脚本语言有效载荷?
TIA
解决方法
您可以按类型读取文件,如果读取文件成功,则文件不包含任何恶意脚本,但如果读取文件有错误,则文件无效:
if (fileType.equalsIgnoreCase("png") || fileType.equalsIgnoreCase("JPG")){
java.io.File file = new java.io.File(filePath);
try {
java.awt.image.BufferedImage image = javax.imageio.ImageIO.read(file);
if(image == null){
//file invalid
}
//file valid
}
catch (Exception e){
//file invalid
e.printStackTrace();
}
}
else if (fileType.equalsIgnoreCase("pdf")){
try {
org.apache.pdfbox.pdmodel.PDDocument document = org.apache.pdfbox.pdmodel.PDDocument.load(new java.io.File(filePath);
if(document == null){
//file invalid
}
//file valid
}
catch (Exception e){
//file invalid
e.printStackTrace();
}
}
else{
//file invalid
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。