endsWith考虑路径的文件扩展名,这是一个安全漏洞吗?

时间:2012-10-17 02:29:35

标签: java security

当我拨打endsWith(".pdf")时,会打开malware.pdf.exe还是恶意软件.pdf?

String sFileName = request.getParameter("fName");
if (sFileName.toLowerCase().endsWith(".pdf"))
// open file
else
// don’t open the file

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

String.endsWith按照记录的方式工作。但是,这里有一些明显的问题。

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

  • 如果提供服务,可能会因延长而丢失内容,可能会被格式化为其他类型。

  • 从本地文件系统运行从Internet下载的PDF通常很危险。 (Chrome警告此事,并在Content Smuggling上查看Billy Rios。)