मैं एक नया उत्तर पोस्ट कर रहा हूं क्योंकि मुझे लगता है कि zneak के उत्तर में पर्याप्त उदाहरण नहीं हैं, HTML और URI को अलग-अलग पहलुओं और मानकों के रूप में नहीं दिखाते हैं और कुछ छोटी चीजें गायब हैं।
आपके पास लिंक ( <a href) में URL से संबंधित दो मानक हैं ।
पहला मानक RFC 1866 (HTML 2.0) है जहां "3.2.1। डेटा वर्ण" में आप उन पात्रों को पढ़ सकते हैं जिन्हें HTML विशेषता के लिए मान के रूप में उपयोग किए जाने से बचना चाहिए। (गुण स्वयं विशेष पात्रों को अनुमति नहीं देते हैं, उदाहरण के <a hr&ef="http://...लिए अनुमति नहीं है, न ही है <a hr&ef="http://...।)
बाद में यह HTML 4 मानक में चला गया है , आपको जिन पात्रों से बचने की आवश्यकता है वे हैं:
< to <
> to >
& to &
" to "e;
' to '
अन्य मानक RFC 3986 "जेनेरिक URI मानक" है, जहाँ URL को संभाला जाता है (यह तब होता है जब ब्राउज़र किसी लिंक का अनुसरण करने वाला होता है क्योंकि उपयोगकर्ता HTML तत्व पर क्लिक करता है)।
reserved = gen-delims / sub-delims
gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@"
sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="
उन पात्रों से बचना महत्वपूर्ण है ताकि ग्राहक जानता है कि वे डेटा या एक सीमांकक का प्रतिनिधित्व करते हैं।
उदाहरण अनुपलब्ध:
https://example.com/?user=test&password&te&st&goto=https://google.com
उदाहरण, पूरी तरह से कानूनी URL
https://example.com/?user=test&password&te%26st&goto=https%3A%2F%2Fgoogle.com
HTML विशेषता के मूल्य में पूरी तरह से वैध URL उदाहरण:
https://example.com/?user=test&password&te%26st&goto=https%3A%2F%2Fgoogle.com
इसके अलावा महत्वपूर्ण परिदृश्य:
मूल्य के रूप में जावास्क्रिप्ट:
<img src="..." onclick="window.location.href = "https://example.com/?user=test&password&te%26st&goto=https%3A%2F%2Fgoogle.com";">...</a>(हां, ;;सही है।)
JSON एक मूल्य के रूप में:
<a href="..." data-analytics="{"event": "click"}">...</a>
बची हुई चीजों के अंदर बची चीजें, डबल एन्कोडिंग, यूआरएल को यूआरएल के अंदर पैरामिटर आदि ...
http://x.com/?passwordUrl=http%3A%2F%2Fy.com%2F%3Fuser%3Dtest&password=""123