@@ -6,6 +6,7 @@ import org.parosproxy.paros.network.HttpHeader
6
6
import org.parosproxy.paros.network.HttpMessage
7
7
import org.parosproxy.paros.network.HttpSender
8
8
import org.zaproxy.zap.network.HttpSenderListener
9
+ import java.net.URLDecoder
9
10
import java.time.LocalDateTime
10
11
import java.time.format.DateTimeFormatter
11
12
@@ -33,16 +34,32 @@ class ReflectListener(private val reflectPanel: ReflectPanel) : HttpSenderListen
33
34
val params = mutableSetOf<HtmlParameter >()
34
35
params.addAll(req.urlParams)
35
36
params.addAll(req.formParams)
36
- val responseHeader = req.requestHeader.toString()
37
+ val filteredParams = params.asSequence().filter { it.value.length >= 4 }
38
+ val responseHeader = req.responseHeader.toString()
37
39
val responseBody = req.responseBody.toString()
38
- val reflected = params.asSequence().filter { it.value.length >= 4 }
40
+ val reflectedHeader = filteredParams
41
+ .filter {
42
+ responseHeader.contains(
43
+ it.value,
44
+ ignoreCase = true
45
+ ) || responseHeader.contains(
46
+ URLDecoder .decode(it.value, " UTF-8" ),
47
+ ignoreCase = true
48
+ )
49
+ }.toSet()
50
+ val reflectedBody = filteredParams
39
51
.filter {
40
52
responseBody.contains(
41
53
it.value,
42
54
ignoreCase = true
55
+ ) || responseBody.contains(
56
+ URLDecoder .decode(it.value, " UTF-8" ),
57
+ ignoreCase = true
43
58
)
44
59
}.toSet()
45
- val reflectedTokens = reflected.map { it.value }.toSet().toList()
60
+ val reflectedHeaderTokens = reflectedHeader.map { it.value }.toSet().toList()
61
+ val reflectedBodyTokens = reflectedBody.map { it.value }.toSet().toList()
62
+ val reflected = (reflectedHeader + reflectedBody).toSet().toList()
46
63
if (reflected.isNotEmpty()) {
47
64
val now = LocalDateTime .now()
48
65
val dateFormatter = DateTimeFormatter .ofPattern(" yyyy-MM-dd HH:mm:ss" )
@@ -66,7 +83,7 @@ class ReflectListener(private val reflectPanel: ReflectPanel) : HttpSenderListen
66
83
mimeType = req.responseHeader.getHeaderValues(HttpHeader .CONTENT_TYPE ).toString(),
67
84
protocol = req.requestHeader.uri.scheme,
68
85
parameters = parameters,
69
- highlighter = ReflectHighlight (req, reflectedTokens )
86
+ highlighter = ReflectHighlight (req, reflectedHeaderTokens, reflectedBodyTokens )
70
87
)
71
88
reflectPanel.addReflection(reqRes)
72
89
}
0 commit comments