| Delimiter | Purpose |
|---|---|
? |
Start query string |
& |
Query param separator |
= |
Key-value separator |
# |
Fragment (client-side only) |
/ |
Path separator |
: |
Scheme separator |
@ |
Userinfo separator |
; |
Path parameter delimiter (legacy) |
| Delimiter | Use | Security Relevance | |
|---|---|---|---|
; |
Path / matrix params | Filter bypass | |
, |
List separator | Parsing inconsistencies | |
| ` | ` | Legacy systems | WAF bypass |
%26 |
Encoded & |
Double parsing | |
%3B |
Encoded ; |
Filter bypass | |
%23 |
Encoded # |
Fragment confusion |
- Supports matrix variables using
;
Example:
/users;id=1;role=admin
- May treat
;as param separator
Example:
/users?id=1;role=admin
- Uses
& - Supports nested params via
qs
Example:
?id=1&role=admin
?id[]=1&id[]=2
- Supports
∧
Example:
?id=1;role=admin
- Strict: only
&
- Uses
& - May tolerate
;in legacy configs
- Strict parsing (
&only)
- Supports
;(JSESSIONID)
Example:
/app;jsessionid=XYZ?id=1
- Treats
;as part of URI
- Config-dependent behavior
- Often normalizes
&only
?id=1&role=user;role=admin
?id=1%3Brole=admin
?id=1;admin=true
/api?user=guest;user=admin
&
;
,
|
%26
%3B
%2C
%7C
?id=1&role=user;role=admin
?id=1;role=admin&debug=true
?id=1&id=2
Different systems parse URLs differently β leads to vulnerabilities.
&= standard;= dangerous- Encoding = bypass tool
- Exploits = parser mismatch