From c2dc23d7f598100a0c22521cb4234537ce8849da Mon Sep 17 00:00:00 2001 From: thc202 Date: Tue, 11 Nov 2025 11:42:05 +0000 Subject: [PATCH] Use parameter representation consistently Use the same logic in all cases, in some of them the parameters could be missing in the alerts and the tree. Signed-off-by: thc202 --- .../zaproxy/zap/model/SessionStructure.java | 60 ++++++++----------- 1 file changed, 25 insertions(+), 35 deletions(-) diff --git a/zap/src/main/java/org/zaproxy/zap/model/SessionStructure.java b/zap/src/main/java/org/zaproxy/zap/model/SessionStructure.java index 944c987dbdf..39e66a029d9 100644 --- a/zap/src/main/java/org/zaproxy/zap/model/SessionStructure.java +++ b/zap/src/main/java/org/zaproxy/zap/model/SessionStructure.java @@ -208,7 +208,7 @@ private static String getNodeName( try { HttpMessage msg = getMsg(uri, method, postData, contentType); - String params = getParams(session, msg); + String params = getParamsString(session, msg); if (!params.isEmpty()) { nodeUrl += " " + params; } @@ -225,7 +225,7 @@ private static String getNodeName( String nodeUrl = pathsToUrl(host, paths, size); if (msg != null) { - String params = getParams(session, msg); + String params = getParamsString(session, msg); if (!params.isEmpty()) { nodeUrl = nodeUrl + " " + params; } @@ -248,7 +248,7 @@ public static String getNodeName(Model model, HttpMessage msg) throws URIExcepti List paths = getTreePath(model, uri); String host = getHostName(uri); String nodeUrl = pathsToUrl(host, paths, paths.size()); - String params = getParams(session, msg); + String params = getParamsString(session, msg); if (!params.isEmpty()) { nodeUrl += " " + params; } @@ -268,19 +268,23 @@ public static String getLeafName(Model model, String nodeName, HttpMessage msg) } } + return getLeafName(nodeName, msg, getParameters(model.getSession(), msg)); + } + + private static List getParameters( + Session session, HttpMessage msg) { List params = convertNVP( - model.getSession().getParameters(msg, Type.url), + session.getParameters(msg, Type.url), org.parosproxy.paros.core.scanner.NameValuePair.TYPE_QUERY_STRING); if (msg.getRequestBody().length() > 0) { params.addAll( convertNVP( - model.getSession().getParameters(msg, Type.form), + session.getParameters(msg, Type.form), org.parosproxy.paros.core.scanner.NameValuePair.TYPE_POST_DATA)); } - - return getLeafName(nodeName, msg, params); + return params; } /** @@ -313,21 +317,27 @@ public static String getLeafName( sb.append(method); sb.append(":"); sb.append(nodeName); + sb.append(getParamsString(params, message)); + + return sb.toString(); + } + private static String getParamsString(Session session, HttpMessage message) { + return getParamsString(getParameters(session, message), message); + } + + private static String getParamsString( + List params, HttpMessage message) { List postParams = convertParosNVP( params, org.parosproxy.paros.core.scanner.NameValuePair.TYPE_POST_DATA); - sb.append( - getQueryParamString( + return getQueryParamString( convertParosNVP( params, org.parosproxy.paros.core.scanner.NameValuePair.TYPE_QUERY_STRING), - !postParams.isEmpty())); - - sb.append(getPostParamString(message, getQueryParamString(postParams, false))); - - return sb.toString(); + !postParams.isEmpty()) + + getPostParamString(message, getQueryParamString(postParams, false)); } private static List convertNVP( @@ -492,7 +502,7 @@ private static RecordStructure addStructure( if (msg != null) { url = msg.getRequestHeader().getURI().toString(); - String params = getParams(session, msg); + String params = getParamsString(session, msg); if (!params.isEmpty()) { nodeName = nodeName + " " + params; } @@ -633,26 +643,6 @@ public static StructuralNode getRootNode(Model model) { return null; } - private static String getParams(Session session, HttpMessage msg) throws URIException { - String contentType = msg.getRequestHeader().getHeader(HttpHeader.CONTENT_TYPE); - String reqBody = msg.getRequestBody().toString(); - boolean hasReqBody = contentType != null && !reqBody.isEmpty(); - - String leafParams = - getQueryParamString( - session.getUrlParameters(msg.getRequestHeader().getURI()), hasReqBody); - if (!hasReqBody) { - return leafParams; - } - - return leafParams - + getPostParamString( - msg, - getQueryParamString( - session.getFormParameters(msg.getRequestHeader().getURI(), reqBody), - false)); - } - private static String getPostParamString(HttpMessage msg, String fallback) { String contentType = msg.getRequestHeader().getHeader(HttpHeader.CONTENT_TYPE); String reqBody = msg.getRequestBody().toString();