为什么这个代码被认为是危险的或脆弱的?
String sFileName = request.getParameter("fName");
if (sFileName.toLowerCase().endsWith(".pdf"))
// open file
else
// don’t open the file发布于 2016-05-19 06:42:12
除了路径遍历攻击之外,该代码还容易受到Null-Byte注入的攻击。有关更多信息,请阅读这。
更新:
正如Maarten所指出的那样,这一点从1.7.0_40开始就得到了修正。不过,我记得这是1.6中的一个漏洞。无论如何,当您查看File类的源代码时,您会发现添加了isInvalid()方法,该方法进行空字节检查:
final boolean isInvalid() {
if (status == null) {
status = (this.path.indexOf('\u0000') < 0) ? PathStatus.CHECKED
: PathStatus.INVALID;
}
return status == PathStatus.INVALID;
}还请参阅堆栈过流上的这篇文章。
发布于 2016-05-20 07:29:52
现在,我看到这段代码有两个问题,取决于上下文。
.pdf结尾这一事实并不意味着它是一个PDF文件。可能会引发各种麻烦。但就像我说的,一切都取决于背景。
https://security.stackexchange.com/questions/123694
复制相似问题