Skip to content

Commit bc0b0d6

Browse files
authored
Merge pull request #663 from mjkim610/url-encoding
Change encoding for SP character
2 parents b3c08eb + ed5e234 commit bc0b0d6

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

url/encoding.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package urlutil
2+
3+
import (
4+
"github.com/projectdiscovery/utils/env"
5+
)
6+
7+
// SpaceEncoding determines how spaces are encoded in URLs via external environment variable:
8+
// - When empty (""), spaces are encoded as "+"
9+
// - When set to "percent", spaces are encoded as "%20"
10+
var SpaceEncoding = env.GetEnvOrDefault("SPACE_ENCODING", "")

url/rawparam.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -175,9 +175,15 @@ func URLEncodeWithEscapes(data string, charset ...rune) string {
175175
buff.WriteRune('%')
176176
buff.WriteString(getasciihex(r)) // 2 digit hex
177177
case r == ' ':
178-
// prefer using + when space
179-
buff.WriteRune('+')
180-
// case
178+
// use configuration to determine space encoding
179+
switch SpaceEncoding {
180+
case "percent":
181+
buff.WriteRune('%')
182+
buff.WriteRune('2')
183+
buff.WriteRune('0')
184+
default:
185+
buff.WriteRune('+')
186+
}
181187
case r < rune(127):
182188
if _, ok := mustescape[r]; ok {
183189
// reserved char must escape

0 commit comments

Comments
 (0)