Skip to content

Commit 3c7e5c5

Browse files
committed
cleanup app
1 parent 802d930 commit 3c7e5c5

2 files changed

Lines changed: 19 additions & 2 deletions

File tree

core-tests/e2e-tests/spring/spring-rest-bb/src/main/kotlin/com/foo/rest/examples/bb/cleanupmismatch/BBCleanUpMismatchApplication.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,21 @@ open class BBCleanUpMismatchApplication {
2727
}
2828
}
2929

30+
private fun containsUnsafeUrlCharacters(str: String): Boolean {
31+
// Characters that are problematic in URL path parameters
32+
val unsafeChars = setOf('<', '>', '"', '\'', '&', '/', '\\', '{', '}', '|', '^', '[', ']', '`', ' ')
33+
return str.any { it in unsafeChars || it.code < 32 || it.code > 126 }
34+
}
3035

3136
@PostMapping(path = ["/items"], consumes = [MediaType.APPLICATION_JSON_VALUE], produces = [MediaType.APPLICATION_JSON_VALUE])
3237
fun postCreate(@RequestBody dto: BBCleanUpDto) : ResponseEntity<BBCleanUpDto> {
3338

3439
if(dto.id.isNullOrBlank() || dto.x == null) return ResponseEntity.status(400).build()
3540

41+
if(containsUnsafeUrlCharacters(dto.id!!)) {
42+
return ResponseEntity.status(400).build()
43+
}
44+
3645
if(data.containsKey(dto.id)){
3746
return ResponseEntity.status(409).build()
3847
}

core/src/main/kotlin/org/evomaster/core/problem/rest/oracle/RestSecurityOracle.kt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,8 +228,16 @@ object RestSecurityOracle {
228228
"<img src=x onerror=alert('XSS')>",
229229
"<svg onload=alert('XSS')>",
230230
"<details open ontoggle=alert('XSS')>",
231-
"<script>alert('XSS')</script>",
232-
"<iframe src='javascript:alert(\"XSS\")'></iframe>"
231+
//TODO if payload contains "/" it causes StackOverflow:
232+
//java.lang.StackOverflowError
233+
// at org.evomaster.core.search.StructuralElement.<init>(StructuralElement.kt:107)
234+
// at org.evomaster.core.search.StructuralElement.<init>(StructuralElement.kt:19)
235+
// at org.evomaster.core.search.gene.Gene.<init>(Gene.kt:58)
236+
// at org.evomaster.core.search.gene.root.SimpleGene.<init>(SimpleGene.kt:13)
237+
// at org.evomaster.core.search.gene.collection.EnumGene.<init>(EnumGene.kt:25)
238+
// at org.evomaster.core.search.gene.collection.EnumGene.copyContent(EnumGene.kt:111)
239+
// "<script>alert('XSS')</script>",
240+
// "<iframe src='javascript:alert(\"XSS\")'></iframe>"
233241
)
234242

235243

0 commit comments

Comments
 (0)