当我拨打endsWith(".pdf")
时,会打开malware.pdf.exe还是恶意软件.pdf?
String sFileName = request.getParameter("fName");
if (sFileName.toLowerCase().endsWith(".pdf"))
// open file
else
// don’t open the file
答案 0 :(得分:1)
.endsWith("string")
将按您的意愿执行。但是,这并不意味着该文件实际上是一个pdf。有关如何检查标题的详细信息,请查看this SO question或其他人。
答案 1 :(得分:1)
String.endsWith
按照记录的方式工作。但是,这里有一些明显的问题。
就操作系统文件API而言,NUL字符\0
通常会终止字符串(因为它将使用C字符串)。
如果提供服务,可能会因延长而丢失内容,可能会被格式化为其他类型。
从本地文件系统运行从Internet下载的PDF通常很危险。 (Chrome警告此事,并在Content Smuggling上查看Billy Rios。)