CN109558119A - 一种基于Java的Web框架遍历请求地址的方法 - Google Patents
一种基于Java的Web框架遍历请求地址的方法 Download PDFInfo
- Publication number
- CN109558119A CN109558119A CN201811328590.5A CN201811328590A CN109558119A CN 109558119 A CN109558119 A CN 109558119A CN 201811328590 A CN201811328590 A CN 201811328590A CN 109558119 A CN109558119 A CN 109558119A
- Authority
- CN
- China
- Prior art keywords
- file
- request
- java
- request address
- path
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program documentation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Library & Information Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及一种基于Java的Web框架遍历请求地址的方法,识别Web框架类型为Spring则获取用户输入的项目源码所在文件目录并遍历内容,文件夹和文件分类,读取Java文件内容,获得符合策略匹配的字符串作为子路径,获得声明关键词前的字符串作为父路径并拼接到同一个Java文件的每个子路径前,获得完整的请求路径A,读取Web源码根目录下的项目配置文件,读取符合策略规则的所有Servlet地址,作为请求路径B,记录请求路径A和请求路径B,获得请求地址。本发明由机器遍历获得所有请求地址,不需要付出很大的人力成本和时间成本,覆盖程度高,获得的请求地址可以用于协助Java的web安全测试流程中的白盒审计。
Description
技术领域
本发明涉及特别适用于特定功能的数字计算设备或数据处理设备或数据处理方法的技术领域,特别涉及一种能协助Java的Web安全测试流程中的白盒审计的基于Java的Web框架遍历请求地址的方法。
背景技术
Web应用是互联网应用的重要形式,是金融、运营商、政府部门、教育等社会关键信息系统的门户应用首选,而随着各种各样的安全事件以及影响危害巨大的安全漏洞的公布,大家也越来越关注网站应用本身的安全,越来越多网站具有应用安全漏洞检测的需求。
Web应用的安全不可轻视,随着Web 应用的组件技术和支撑手段不断丰富变化,互联网安全下的Web应用所暴露出的安全层面的问题也是层见叠出。黑客通过对暴露在公网上或者直接对未授权连接的内网环境下的Web应用或者服务器进行漏洞攻击,可以获得该Web应用的后台管理员权限或者该Web应用所在的服务器系统权限,一方面可以直接获得该Web应用或者服务器上的敏感文件、敏感数据等信息,另一方面也可以将该服务器做为跳板,对该服务器所在的内网网段进行渗透,进而攻击内网网段中其他的服务器或者其他更多的智能设备,获得大量内网敏感信息、获得服务器权限等。
Java Web开发从1999年至今已经经历近20年历程,推出了Spring、Struts、Hibernate、Ibatis等基于业务或者数据库的框架,具有防护Java Web应用可能遇到的应用层漏洞的大量模型,但是由于开发人员安全意识的薄弱、开发人员的快速流动以及JavaWeb框架自身存在的漏洞,经常会由于参数被污染而导致SQL注入、命令注入、文件上传或者业务层面逻辑漏洞等漏洞产生。
同时,针对Java Web的静态扫描工具很多,比如商用工具Fortify或者开源工具Findbugs等,但是各种工具并不能获得获得更大的检验覆盖程度,同时,这些分析工具产生的结果有可能包含误判或者漏判,此时还需要人工审计,人工审计又要求开发人员要经过安全开发的训练、安全审计人员要经过审计训练,才能熟练掌握 Java Web 源代码安全审计方法,需要付出很大的人力成本和时间成本,安全测试无法获得获得更大的检验覆盖程度。
发明内容
本发明解决了现有技术中,由于开发人员安全意识的薄弱、开发人员的快速流动以及Java Web框架自身存在的漏洞,经常会由于参数被污染而导致SQL注入、命令注入、文件上传或者业务层面逻辑漏洞等漏洞产生,而分析工具产生的结果有可能包含误判或者漏判,人工审计需要付出很大的人力成本和时间成本,安全测试无法获得获得更大的检验覆盖程度的问题,本发明提供了一种优化的基于Java的Web框架遍历请求地址的方法。
本发明所采用的技术方案是,一种基于Java的Web框架遍历请求地址的方法,所述方法包括以下步骤:
步骤1:通过用户选择的框架,识别Web框架类型;
步骤2:若当前Web框架类型是Spring框架类型的,则进行下一步,否则,返回步骤1;
步骤3:获取用户输入的项目源码所在的文件目录,遍历文件目录中的内容,进行文件夹和文件的分类;
步骤4:读取Java文件内容,获得符合策略匹配的所有字符串,作为子路径;
步骤5:读取Java文件内容,若获得位于声明关键词前且符合策略匹配的字符串,则为父路径,拼接到同一个Java文件的每个子路径前获得完整的请求路径A,否则以子路径为请求路径A,进行下一步;
步骤6:读取Web源码根目录下的项目配置文件;
步骤7:正则匹配项目配置文件,读取符合策略规则的所有Servlet地址,作为独立的请求路径B;
步骤8:记录请求路径A和请求路径B,获得请求地址。
优选地,所述步骤3中,遍历文件目录;若当前为文件,则判断是否为Java文件,如是,进行步骤4,若不是,则继续遍历下一个文件或文件夹;若当前为文件夹,则判断文件夹目录下是否包含Java文件,如是,则进行步骤4,若不是,则继续遍历下一个文件或文件夹。
优选地,所述步骤8中,以请求地址用于验证未授权访问。
优选地,以请求地址用于验证未授权访问包括以下步骤:
步骤8.1:遍历记录的请求地址,每遍历获取一个请求地址,将请求地址构造为完整的HTTP请求;
步骤8.2:发起HTTP请求;
步骤8.3:请求返回结果并跳转到登录页面,则请求地址不存在未授权访问,否则进行下一步;
步骤8.4:请求存在未授权访问。
本发明提供了一种优化的基于Java的Web框架遍历请求地址的方法,通过识别Web框架类型,为Spring框架则获取用户输入的项目源码所在的文件目录,遍历文件目录中的内容,进行文件夹和文件的分类,读取Java文件内容,获得符合策略匹配的所有字符串作为子路径,获得声明关键词前的字符串作为父路径并拼接到同一个Java文件的每个子路径前,获得完整的请求路径A,读取Web源码根目录下的项目配置文件,读取符合策略规则的所有Servlet地址,作为独立的请求路径B,记录请求路径A和请求路径B,获得请求地址。
本发明可以直接由机器遍历获得所有请求地址,不需要付出很大的人力成本和时间成本,覆盖程度高,获得的请求地址可以用于协助Java的web安全测试流程中的白盒审计。
附图说明
图1为本发明的流程图。
具体实施方式
下面结合实施例对本发明做进一步的详细描述,但本发明的保护范围并不限于此。
本发明涉及一种基于Java的Web框架遍历请求地址的方法,克服现有白盒审计技术中的不足,基于Web应用框架特性能把源码中的请求遍历出来,最大程度上获取请求验证的覆盖程度。
需要特别说明的是,本发明针对Spring框架类型进行处理,事实上,本领域技术人员也可以通过此发明方法对Struts框架进行检测,先从struts.xml文件中匹配<includefile="获取请求配置文件,然后在请求配置的文件*struts.xml的文件内容中通过匹配<package name="标签对里面的<action name="获取请求路径,然后在加到Web网站Host后面,获取完整的请求地址,完成对struts框架的请求地址获取的发明目的。此为本领域技术人员通过本发明公开的内容后容易理解的内容。
所述方法包括以下步骤。
步骤1:通过用户选择的框架,识别Web框架类型。
步骤2:若当前Web框架类型是Spring框架类型的,则进行下一步,否则,返回步骤1。
步骤3:获取用户输入的项目源码所在的文件目录,遍历文件目录中的内容,进行文件夹和文件的分类。
所述步骤3中,遍历文件目录;若当前为文件,则判断是否为Java文件,如是,进行步骤4,若不是,则继续遍历下一个文件或文件夹;若当前为文件夹,则判断文件夹目录下是否包含Java文件,如是,则进行步骤4,若不是,则继续遍历下一个文件或文件夹。
步骤4:读取Java文件内容,获得符合策略匹配的所有字符串,作为子路径。
本发明中,通过FileReader读取Java文件内容。
本发明中,根据Spring框架的特性,Controller文件中使用@RequestMapping来映射URL到控制器类,故以正则匹配“RequestMapping”关键字符,获取java文件里的路径。
本发明中,由于映射写法的多样性,正则表达式需自定义,比如如果遇到“RequestMapping(value="/index")”这样的映射写法,则获取路径列表的正则表达式为“RequestMapping\\(value\\s*=\\s*\"([^\"]*)\"”,通过正则匹配获取路径为“/index”。
本发明中,通过特定的正则表达式匹配文件内容,当匹配到第一个RequestMapping并获取路径后,接下来从当前RequestMapping后开始进行匹配获取第二个路径,后面以此类推。
步骤5:读取Java文件内容,若获得位于声明关键词前且符合策略匹配的字符串,则为父路径,拼接到同一个Java文件的每个子路径前获得完整的请求路径A,否则以子路径为请求路径A,进行下一步。
本发明中,大部分情况下,Controller文件中还包含有父路径,当遇到如“RequestMapping(value="/api")”的映射写法,则获取路径列表的正则表达式为“RequestMapping\\(value\\s*=\\s*\"([^\"]*)\"”,通过正则匹配获取路径为“/api”。
本发明中,父路径的字符串与子路径的字符串不同的是,该字符串一般在“publicclass”关键字前。
本发明中,如果获取的父路径不为空,则拼接到同一个Java文件的每个子路径前,如父路径为“api”、子路径为“index”,则完整的接口路径为“api/index”,得到所有的请求路径A。
本发明中,若不存在父路径,则请求路径A即为子路径。比如请求url为 http://127.0.0.1/user/login,user为父路径、login为子路径, 则“/user/login”为请求路径A;而若存在请求url为 http://127.0.0.1/login,即没有父路径、login为子路径,则“/login”为请求路径A。
步骤6:读取Web源码根目录下的项目配置文件。
步骤7:正则匹配项目配置文件,读取符合策略规则的所有Servlet地址,作为独立的请求路径B。
本发明中,在Spring框架中,请求的地址除了会记录在Controller文件之外,还有一种会以Java Servlet的方式请求。
本发明中,读取web源码根目录下WEB-INF目录下的项目配置文件web.xml,并通过FileReader读Java文件内容,读到字符串。
本发明中,正则匹配web.xml文件中<servlet-mapping>标签对里的<url-pattern>标签对里的内容,即能获得对应的所有Servlet地址,以此作为请求路径B。
步骤8:记录请求路径A和请求路径B,获得请求地址。
所述步骤8中,以请求地址用于验证未授权访问。
以请求地址用于验证未授权访问包括以下步骤:
步骤8.1:遍历记录的请求地址,每遍历获取一个请求地址,将请求地址构造为完整的HTTP请求;
步骤8.2:发起HTTP请求;
步骤8.3:请求返回结果并跳转到登录页面,则请求地址不存在未授权访问,否则进行下一步;
步骤8.4:请求存在未授权访问。
本发明中,当请求存在未授权访问时,可以通过分析所得请求列表用于获得比如文件上传,文件下载等敏感操作的请求地址。
本发明通过识别Web框架类型,为Spring框架则获取用户输入的项目源码所在的文件目录,遍历文件目录中的内容,进行文件夹和文件的分类,读取Java文件内容,获得符合策略匹配的所有字符串作为子路径,获得声明关键词前的字符串作为父路径并拼接到同一个Java文件的每个子路径前,获得完整的请求路径A,读取Web源码根目录下的项目配置文件,读取符合策略规则的所有Servlet地址,作为独立的请求路径B,记录请求路径A和请求路径B,获得请求地址。本发明可以直接由机器遍历获得所有请求地址,不需要付出很大的人力成本和时间成本,覆盖程度高,获得的请求地址可以用于协助Java的web安全测试流程中的白盒审计。
Claims (4)
1.一种基于Java的Web框架遍历请求地址的方法,其特征在于:所述方法包括以下步骤:
步骤1:通过用户选择的框架,识别Web框架类型;
步骤2:若当前Web框架类型是Spring框架类型的,则进行下一步,否则,返回步骤1;
步骤3:获取用户输入的项目源码所在的文件目录,遍历文件目录中的内容,进行文件夹和文件的分类;
步骤4:读取Java文件内容,获得符合策略匹配的所有字符串,作为子路径;
步骤5:读取Java文件内容,若获得位于声明关键词前且符合策略匹配的字符串,则为父路径,拼接到同一个Java文件的每个子路径前获得完整的请求路径A,否则以子路径为请求路径A,进行下一步;
步骤6:读取Web源码根目录下的项目配置文件;
步骤7:正则匹配项目配置文件,读取符合策略规则的所有Servlet地址,作为独立的请求路径B;
步骤8:记录请求路径A和请求路径B,获得请求地址。
2.根据权利要求1所述的一种基于Java的Web框架遍历请求地址的方法,其特征在于:所述步骤3中,遍历文件目录;若当前为文件,则判断是否为Java文件,如是,进行步骤4,若不是,则继续遍历下一个文件或文件夹;若当前为文件夹,则判断文件夹目录下是否包含Java文件,如是,则进行步骤4,若不是,则继续遍历下一个文件或文件夹。
3.根据权利要求1所述的一种基于Java的Web框架遍历请求地址的方法,其特征在于:所述步骤8中,以请求地址用于验证未授权访问。
4.根据权利要求3所述的一种基于Java的Web框架遍历请求地址的方法,其特征在于:以请求地址用于验证未授权访问包括以下步骤:
步骤8.1:遍历记录的请求地址,每遍历获取一个请求地址,将请求地址构造为完整的HTTP请求;
步骤8.2:发起HTTP请求;
步骤8.3:请求返回结果并跳转到登录页面,则请求地址不存在未授权访问,否则进行下一步;
步骤8.4:请求存在未授权访问。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811328590.5A CN109558119B (zh) | 2018-11-09 | 2018-11-09 | 一种基于Java的Web框架遍历请求地址的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811328590.5A CN109558119B (zh) | 2018-11-09 | 2018-11-09 | 一种基于Java的Web框架遍历请求地址的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109558119A true CN109558119A (zh) | 2019-04-02 |
CN109558119B CN109558119B (zh) | 2022-12-27 |
Family
ID=65866137
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811328590.5A Active CN109558119B (zh) | 2018-11-09 | 2018-11-09 | 一种基于Java的Web框架遍历请求地址的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109558119B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030093717A1 (en) * | 2001-09-26 | 2003-05-15 | International Business Machines Corporation | Test programs for enterprise web applications |
US20050108682A1 (en) * | 2003-02-26 | 2005-05-19 | Bea Systems, Inc. | Systems for type-independent source code editing |
CN101227468A (zh) * | 2007-01-20 | 2008-07-23 | 国际商业机器公司 | 用于认证用户到网络的方法、设备和系统 |
CN101901184A (zh) * | 2009-05-31 | 2010-12-01 | 西门子(中国)有限公司 | 检查应用程序漏洞的方法、装置和系统 |
CN105843609A (zh) * | 2016-03-18 | 2016-08-10 | 浪潮软件集团有限公司 | 一种基于Spring和MyBatis的MVC框架 |
CN106227668A (zh) * | 2016-07-29 | 2016-12-14 | 腾讯科技(深圳)有限公司 | 数据处理方法和装置 |
-
2018
- 2018-11-09 CN CN201811328590.5A patent/CN109558119B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030093717A1 (en) * | 2001-09-26 | 2003-05-15 | International Business Machines Corporation | Test programs for enterprise web applications |
US20050108682A1 (en) * | 2003-02-26 | 2005-05-19 | Bea Systems, Inc. | Systems for type-independent source code editing |
CN101227468A (zh) * | 2007-01-20 | 2008-07-23 | 国际商业机器公司 | 用于认证用户到网络的方法、设备和系统 |
CN101901184A (zh) * | 2009-05-31 | 2010-12-01 | 西门子(中国)有限公司 | 检查应用程序漏洞的方法、装置和系统 |
CN105843609A (zh) * | 2016-03-18 | 2016-08-10 | 浪潮软件集团有限公司 | 一种基于Spring和MyBatis的MVC框架 |
CN106227668A (zh) * | 2016-07-29 | 2016-12-14 | 腾讯科技(深圳)有限公司 | 数据处理方法和装置 |
Non-Patent Citations (4)
Title |
---|
BEWITHME: "获取spring mvc映射的所有请求路径", 《HTTPS://WWW.ITEYE.COM/BLOG/BEWITHME-2342201》 * |
JAVA开发高级进阶公众号: "如何用几条代码获取项目所有的url?", 《HTTPS://BLOG.CSDN.NET/WEIXIN_42084197/ARTICLE/DETAILS/103910107》 * |
WEBENH: "Web用户的身份验证及WebApi权限验证流程的设计和实现", 《HTTPS://WWW.CNBLOGS.COM/WEBENH/P/7499802.HTML》 * |
崔尚森 等: "《Web应用开发技术:JSP(第二版)》", 30 June 2014, 西安电子科技大学出版社 * |
Also Published As
Publication number | Publication date |
---|---|
CN109558119B (zh) | 2022-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103888490B (zh) | 一种全自动的web客户端人机识别的方法 | |
Gupta et al. | PHP-sensor: a prototype method to discover workflow violation and XSS vulnerabilities in PHP web applications | |
US9251282B2 (en) | Systems and methods for determining compliance of references in a website | |
JP2022515007A (ja) | 人工知能を使用した認証されていないapi要求が存在する場合の不適切な活動の検出 | |
Li et al. | Block: a black-box approach for detection of state violation attacks towards web applications | |
CN107370719B (zh) | 异常登录识别方法、装置及系统 | |
CN111753171B (zh) | 一种恶意网站的识别方法和装置 | |
KR102047929B1 (ko) | 웹사이트 검증 방법 | |
CN105404816B (zh) | 基于内容的漏洞检测方法及装置 | |
CN111191246A (zh) | 一种基于Spring注解的安全开发校验方法 | |
CN104462985A (zh) | bat漏洞的检测方法以及装置 | |
US20210092144A1 (en) | Http log integration to web application testing | |
CN112887341A (zh) | 一种外部威胁监控方法 | |
CN109145585A (zh) | 一种检测网站存在弱口令的方法及装置 | |
US20220043932A1 (en) | Privacy-preserving data collection | |
CN107590253A (zh) | 一种针对MySQL数据库配置安全性的自动化检测方法 | |
Ling et al. | Are they toeing the line? diagnosing privacy compliance violations among browser extensions | |
US20240241923A1 (en) | Advanced data collection block identification | |
US7711648B2 (en) | Method and apparatus for obtaining content license rights via a document link resolver | |
CN118036009A (zh) | 处理安全漏洞的方法、装置及电子设备 | |
US20240111892A1 (en) | Systems and methods for facilitating on-demand artificial intelligence models for sanitizing sensitive data | |
CN109558119A (zh) | 一种基于Java的Web框架遍历请求地址的方法 | |
KR102363404B1 (ko) | 웹 방화벽과 취약점 분석도구의 연동방법 | |
Zhao et al. | Large-scale detection of privacy leaks for BAT browsers extensions in China | |
Rodriguez et al. | ROI: a method for identifying organizations receiving personal data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |