最近通过同事的一次测试,正好发现了htmlparser的一处危险用法。姑且记录在博客里面,如果你恰好也用到了htmlpaser,可以检查一下自己的代码。
htmlparser(主页地址)是一个用的比较广泛的java解析html的库。
如下的代码使用会带来问题:
使用parser的string参数类型的构造函数,如果其中的content可以被用户或者外界手工指定时,
当用户传入"../../...../etc/passwd"时就有可能读出其中的内容。
具体原因在于htmlparser调用了ConnectionManager这个类,其中
给出了读本地文件的能力。
htmlparser(主页地址)是一个用的比较广泛的java解析html的库。
如下的代码使用会带来问题:
import org.htmlparser.Parser;
......
Parser parser = newParser(content);
......使用parser的string参数类型的构造函数,如果其中的content可以被用户或者外界手工指定时,
当用户传入"../../...../etc/passwd"时就有可能读出其中的内容。
具体原因在于htmlparser调用了ConnectionManager这个类,其中
public URLConnection openConnection (String string)
throws
ParserException
{
final String prefix = "file://localhost";
......给出了读本地文件的能力。
本文介绍了一个关于HTMLParser的安全隐患,当使用其构造函数解析用户提供的字符串时,可能会导致读取服务器上的敏感文件,如/etc/passwd。此问题源于htmlparser库内部调用了允许读取本地文件的功能。
2683

被折叠的 条评论
为什么被折叠?



