0

当我打电话时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
4

2 回答 2

1

.endsWith("string")将按您的意愿执行。但是,这并不意味着该文件实际上是 pdf。查看这个 SO question或其他有关如何检查标题的更多信息。

于 2012-10-17T02:35:37.420 回答
1

String.endsWith按记录工作。但是,这里有几个明显的问题。

  • 就 OS 文件 API 而言, NUL 字符\0通常会终止字符串(因为它将使用 C 字符串)。

  • 如果提供服务,可能会因扩展而丢失内容,可能会被转换为不同的类型。

  • 从本地文件系统运行从 Internet 下载的 PDF 通常很危险。(Chrome 对此提出警告,请参阅 Billy Rios on Content Smuggling)。

于 2012-10-17T20:00:47.950 回答