一尘不染

提取所有输入参数的JSP页面搜寻器

jsp

您是否偶然知道开源Java组件,该组件提供了扫描一组动态页面(JSP)并从中提取所有输入参数的功能。当然,搜寻器将能够搜寻静态代码而非动态代码,但是我的想法是将其扩展为搜寻包括所有服务器端代码的Web服务器。自然,我假设该工具将具有对爬网的Web服务器的完全访问权限,而不是通过使用任何黑客手段。

这个想法是建立一个静态分析器,它有能力检测所有动态页面中的所有参数(request.getParameter()等)字段。


阅读 241

收藏
2020-06-10

共1个答案

一尘不染

这个想法是建立一个静态分析器,它有能力检测所有动态页面中的所有参数字段。

您不能使用 Web
搜寻器(基本上是HTML解析器)提取请求参数。他们最多可以扫描HTML结构。您可以为此使用例如Jsoup

for (Element form : Jsoup.connect("http://google.com").get().select("form")) {
    System.out.printf("Form found: action=%s, method=%s%n", form.attr("action"), form.attr("method"));
    for (Element input : form.select("input,select,textarea")) {
        System.out.printf("\tInput found: name=%s, value=%s%n", input.attr("name"), input.attr("value"));
    }
}

目前正在打印

找到的形式:动作=,方法=
    找到输入:name = hl,value = en
    找到输入:名称=来源,值= hp
    找到输入:名称=即,值= ISO-8859-1
    找到输入:名称= q,值=
    找到输入:name = btnG,value = Google搜索
    找到输入:name = btnI,value =我很幸运
    找到输入:name =,value =
找到的形式:动作= /搜索,方法=
    找到输入:name = hl,value = en
    找到输入:名称=来源,值= hp
    找到输入:名称=即,值= ISO-8859-1
    找到输入:名称= q,值=
    找到输入:name = btnG,value = Google搜索
    找到输入:name = btnI,value =我很幸运

如果要扫描JSP 源代码 中的任何表单/输入,则必须朝另一个方向看,绝对不要将其称为“
Web搜寻器”。不幸的是,没有想到这样的静态分析工具。您最能得到的是创建一个Filter记录所有提交的请求参数的。

Map<String, String[]> params = request.getParameterMap();
// ...
2020-06-10