suchen
HeimJavajavaLernprogrammDetaillierte Einführung in das Abfangen von Struts1-URLs

In diesem Artikel wird hauptsächlich das URL-Abfangen von Struts1_bezogenen Informationen vorgestellt, die von der Power Node Java Academy zusammengestellt wurden. Freunde in Not können sich darauf beziehen

Das URL-Abfangen von Struts1

Lassen Sie uns zunächst ActionServlet eingehend analysieren. Wir verwenden Breakpoint-Debugging, um den zugrunde liegenden Quellcode zu untersuchen. Da diese Instanz im Post-Modus übermittelt wird, legen Sie den Haltepunkt auf die doPost-Methode fest.


Wir debuggen das laufende Programm und geben die Methode in doPost ein:

Diese Methode Es ist sehr wichtig, dass es die Kernmethode für die Ausführung von ActionServlet ist.

Wir geben diese Methode ein:


Dann geben Sie weiter ein:



Wir haben plötzlich entdeckt, dass eine solche Methode die Methode „processPath“ ist, eine Methode zum Abfangen von Zeichenfolgen. Der Quellcode dieser Methode lautet wie folgt:

/** 
  * <p>Identify and return the path component(from the request URI) that 
  * we will use to select an <code>ActionMapping</code> with which todispatch. 
  * If no such path can be identified,create an error response and return 
  * <code>null</code>.</p> 
  * 
  * @param request The servlet request weare processing 
  * @param response The servlet response weare creating 
  * 
  * @exception IOException if an input/outputerror occurs 
  */ 
 protectedString processPath(HttpServletRequest request, 
        HttpServletResponse response) 
  throws IOException { 
 
  String path = null; 
 
  // For prefix matching, match on the path info (if any) 
  path = (String) request.getAttribute(INCLUDE_PATH_INFO); 
  if (path == null) { 
   path = request.getPathInfo(); 
  } 
  if ((path != null) && (path.length() > 0)) { 
   return (path); 
  } 
 
  // For extension matching, strip the module prefix and extension 
  path = (String) request.getAttribute(INCLUDE_SERVLET_PATH); 
  if (path == null) { 
   path = request.getServletPath(); 
  } 
  String prefix = moduleConfig.getPrefix(); 
  if (!path.startsWith(prefix)) { 
   String msg =getInternal().getMessage("processPath"); 
    
   log.error(msg + " " + request.getRequestURI()); 
   response.sendError(HttpServletResponse.SC_BAD_REQUEST, msg); 
 
   return null; 
  } 
   
  path = path.substring(prefix.length()); 
  int slash = path.lastIndexOf("/"); 
  int period = path.lastIndexOf("."); 
  if ((period >= 0) && (period >slash)) { 
   path = path.substring(0, period); 
  } 
  return (path); 
 
}

Analysieren Sie diesen Code:

path = (String)request.getAttribute(INCLUDE_PATH_INFO); 
  if (path == null) { 
   path = request.getPathInfo(); 
  } 
  if ((path != null) && (path.length() > 0)) { 
   return (path); 
  }

Dieser Code ermittelt zunächst, ob die Pfadinformationen in javax.servlet.include.path_info vorhanden sind. Hier müssen Sie wissen, dass dieser Attributwert nur vorhanden ist, wenn eine Seite im RequestDispatcher.include-Modus angezeigt wird. Wenn hier also kein Wert vorhanden ist, wird das Programm path=request.getPathInfo() eingegeben. Der von getPathInfo hier erhaltene Wert ist die Pfadinformation relativ zum Servlet.

// For extension matching, stripthe module prefix and extension 
  path = (String) request.getAttribute(INCLUDE_SERVLET_PATH); 
  if (path == null) { 
   path = request.getServletPath(); 
  } 
  String prefix = moduleConfig.getPrefix(); 
  if (!path.startsWith(prefix)) { 
   String msg =getInternal().getMessage("processPath"); 
    
   log.error(msg + " " + request.getRequestURI()); 
   response.sendError(HttpServletResponse.SC_BAD_REQUEST, msg); 
 
   return null; 
  }

Mit diesem Codeteil wird ermittelt, ob javax.servlet.include.servlet_path einen Wert hat. Dieser Attributwert existiert nur, wenn eine Seite im requestDispatcher.include-Modus angezeigt wird, daher gibt es hier keinen Wert . . Geben Sie dann path = request.getServletPath(); ein. Diese Methode dient dazu, die Teilzeichenfolge nach der Rückgabe des Anforderungs-URI-Kontexts abzurufen. Der Rückgabewert lautet hier also „/“ sowie der Name und das Suffix der Zugriffsseite (ist dies dasselbe wie bei meiner MVC-Instanz). abfangen? Prinzip). Geben Sie dann den folgenden Code ein:

path = path.substring(prefix.length()); 
  intslash = path.lastIndexOf("/"); 
  intperiod = path.lastIndexOf("."); 
  if((period >= 0) && (period > slash)) { 
   path = path.substring(0, period); 
  } 
  return (path);

Die Methode hier ist im Wesentlichen die gleiche wie meine oben, die Hauptsache ist, das Suffix zu entfernen.

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in das Abfangen von Struts1-URLs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

SecLists

SecLists

SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.