当我打电话时endsWith(".pdf")
,这会打开malware.pdf.exe 还是仅仅打开malware.pdf?
String sFileName = request.getParameter("fName");
if (sFileName.toLowerCase().endsWith(".pdf"))
// open file
else
// don’t open the file
.endsWith("string")
将按您的意愿执行。但是,这并不意味着该文件实际上是 pdf。查看这个 SO question或其他有关如何检查标题的更多信息。
String.endsWith
按记录工作。但是,这里有几个明显的问题。
就 OS 文件 API 而言, NUL 字符\0
通常会终止字符串(因为它将使用 C 字符串)。
如果提供服务,可能会因扩展而丢失内容,可能会被转换为不同的类型。
从本地文件系统运行从 Internet 下载的 PDF 通常很危险。(Chrome 对此提出警告,请参阅 Billy Rios on Content Smuggling)。