Zneak'ın cevabının yeterli örnekleri olmadığını, HTML ve URI işlemeyi farklı yönler ve standartlar olarak göstermediğini ve bazı küçük şeylerin eksik olduğunu bulduğum için yeni bir cevap gönderiyorum.
Links ( <a href) içindeki URL'lerle ilgili iki standardınız var .
Birinci standart, "3.2.1. Veri Karakterleri" nde bir HTML özelliğinin değeri olarak kullanıldığında kaçması gereken karakterleri okuyabileceğiniz RFC 1866'dır (HTML 2.0). (Özniteliklerin kendileri özel karakterlere hiç izin vermez, örneğin <a hr&ef="http://...izin verilmez veya izin verilmez <a hr&ef="http://....)
Daha sonra bu HTML 4 standardına girdi, kaçmanız gereken karakterler:
< to <
> to >
& to &
" to "e;
' to '
Diğer standart, URL'lerin işlendiği RFC 3986 "Genel URI standardı" dır (bu, kullanıcı HTML öğesini tıkladığı için tarayıcı bir bağlantıyı izlemek üzereyken olur).
reserved = gen-delims / sub-delims
gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@"
sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="
Bu karakterlerden kaçmak önemlidir, böylece müşteri verileri mi yoksa bir sınırlayıcı mı temsil ettiğini bilir.
Kaçışsız örnek:
https://example.com/?user=test&password&te&st&goto=https://google.com
Örnek, tamamen yasal URL
https://example.com/?user=test&password&te%26st&goto=https%3A%2F%2Fgoogle.com
HTML özelliği değerinde tam yasal URL örneği:
https://example.com/?user=test&password&te%26st&goto=https%3A%2F%2Fgoogle.com
Ayrıca önemli senaryolar:
Değer olarak Javascript:
<img src="..." onclick="window.location.href = "https://example.com/?user=test&password&te%26st&goto=https%3A%2F%2Fgoogle.com";">...</a>(Evet, ;;doğrudur.)
Değer olarak JSON:
<a href="..." data-analytics="{"event": "click"}">...</a>
Kaçan şeylerin içinde kaçan şeyler, çift kodlama, parametre içindeki URL içindeki URL vb.
http://x.com/?passwordUrl=http%3A%2F%2Fy.com%2F%3Fuser%3Dtest&password=""123