ठीक है, तो मान लीजिए कि आप अपने सभी स्ट्रिंग-एन्कोडिंग कार्यों को सही कर रहे हैं। आपके पास कोई एसक्यूएल इंजेक्शन, एचटीएमएल इंजेक्शन, या वे जगह नहीं हैं जहां आप यूआरएल-एन्कोडिंग नहीं कर रहे हैं जो आपको चाहिए। तो हमें कुछ संदर्भों में "< &% \ जादू होने वाले पात्रों के बारे में चिंता करने की आवश्यकता नहीं है। और आप कुछ भी के लिए यूटीएफ -8 का उपयोग कर रहे हैं ताकि यूनिकोड सभी खेल सकें। उपयोगकर्ता नामों को सीमित करने के लिए अन्य कारण क्या हैं?
के साथ, सभी नियंत्रण वर्ण प्रारंभ करने के लिए विवेक के लिए। वहाँ वर्ण के लिए कोई कारण नहीं है U + 0000 के लिए U + 001F या U + 007F एक उपयोगकर्ता नाम में U + 009F करने के लिए।
इसके बाद, इनकार या अप्रत्याशित सामान्य व्हाईटस्पेस। आप उपयोगकर्ता नाम में एक स्थान की अनुमति दे सकते हैं, लेकिन आप लगभग निश्चित रूप से अग्रणी रिक्त स्थान, पीछे की जगहों, या एक पंक्ति में एक से अधिक स्थान की अनुमति नहीं देना चाहते हैं। वे HTML में इसे प्रस्तुत कर सकते हैं, लेकिन शायद उपयोगकर्ता त्रुटि जो भ्रमित होगी।
यदि आप उस उपयोगकर्ता नाम को HTTP मूल प्रमाणीकरण के माध्यम से लॉगिन करने के लिए उपयोग करने का इरादा रखते हैं, तो आपको :
वर्ण को अस्वीकार करना होगा, क्योंकि मूल एथ योजना उपयोगकर्ता नाम में कोई कॉलन होने पर बचने के साथ 'उपयोगकर्ता नाम: पासवर्ड' जोड़ी को एन्कोड करता है या नहीं पारण शब्द।तो कम से कम उपयोगकर्ता नाम और पासवर्ड में कोलन को छोड़ दिया जाना चाहिए, और यह बेहतर है कि यह उपयोगकर्ता नाम है क्योंकि पासवर्ड की लोगों की पसंद को प्रतिबंधित करना उपयोगकर्ता नामों की तुलना में एक बहुत ही बदतर चीज है।
मूल प्रमाणीकरण के लिए आप सभी गैर-ASCII वर्णों को भी अक्षम करना चाहते हैं, क्योंकि उन्हें विभिन्न ब्राउज़रों द्वारा अलग-अलग संभाला जाता है। आईई सिस्टम कोडपेज का उपयोग कर उन्हें एन्कोड करता है; फ़ायरफ़ॉक्स आईएसओ -885 9 -1 का उपयोग करके उन्हें एन्कोड करता है; ओपेरा उन्हें यूटीएफ -8 का उपयोग करके एन्कोड करता है। गैर-ASCII नामों को चुनने से पहले उपयोगकर्ताओं को कम से कम चेतावनी दी जानी चाहिए यदि HTTP एथ उपलब्ध होने जा रहा है, वास्तव में उनका उपयोग करना बहुत अविश्वसनीय होगा।
अगला अन्य यूनिकोड नियंत्रण अनुक्रमों पर विचार करें, bidi ओवरराइड जैसी चीजें और सूचीबद्ध अन्य वर्ण मार्कअप में उपयोग के लिए अनुपयुक्त हैं। शायद आप उन्हें मार्कअप में डालने के लिए खत्म होने जा रहे हैं और आप अपने पृष्ठ में आरएलओ वाले किसी व्यक्ति को अपने पृष्ठ में पाठ का भार बदलने के लिए नहीं चाहते हैं।
इसके अलावा, यदि आप यूनिकोड को तारों पर सामान्यीकरण करने की अनुमति देते हैं। अन्यथा किसी के पास एक रचनाकृत ओ-उमलॉट चरित्र ö
के साथ उपयोगकर्ता नाम हो सकता है, और आश्चर्य हो सकता है कि वे मैक पर क्यों लॉग इन नहीं कर सकते हैं, जो डिफ़ॉल्ट रूप से अलग o
वर्ण का उपयोग करते हैं, जिसके बाद umlaut संयोजन होता है। वेब पर बनाये गये फॉर्म एनएफसी को सामान्य बनाना सामान्य बात है। आप फॉर्म एनएफकेसी का उपयोग कर संगतता अपघटन भी कर सकते हैं; इससे उपयोगकर्ता क्रिस को फुलविड्थ रोमाजी मोड टाइपिंग क्रिस में जापानी कीबोर्ड से लॉग इन करने की अनुमति देगा। ये सामान्य मुद्दे हैं जो आपके सभी वेबपैड इनपुट के लिए हल करना अच्छा है, लेकिन उपयोगकर्ता नाम जैसे पहचानकर्ताओं के लिए यह सही होने के लिए और अधिक महत्वपूर्ण हो सकता है।
अंत में, सुनिश्चित करें कि नाम बदलने के लिए चुपचाप बिना किसी चुप छेड़छाड़ के डेटाबेस में फिट होना ठीक है, खासकर यदि आप यूटीएफ -8 बाइट्स के रूप में संग्रहित हैं जो आप बाइट अनुक्रम के माध्यम से आधा रास्ते नहीं छीनना चाहते हैं। उपयोगकर्ता नाम छंटनी सामान्य रूप से एक सुरक्षा समस्या भी हो सकती है।
यदि आप पहचान के अद्वितीय साधन के रूप में उपयोगकर्ता नाम का उपयोग कर रहे हैं, तो आपके पास चिंता करने के लिए बहुत कुछ है: Сhris
(एक सिरिलिक ए С
के साथ) की रूपरेखा की पहले से ही उल्लिखित समस्या। उचित रूप से संभालने के लिए इनमें से बहुत सारे हैं; या तो ASCII तक सीमित है या उपयोगकर्ताओं की पहचान करने का एक अतिरिक्त माध्यम है। (या परवाह नहीं है, जैसे एसओ नहीं करता; जब मैं आसानी से खुद को क्रिस कह सकता हूं तो मुझे खुद को С
-hris कॉल करने की आवश्यकता नहीं है।)
ध्यान रखें कि आपको स्क्रिप्ट और एचटीएमएल इंजेक्शन के बारे में चिंता करने की भी आवश्यकता है , सिर्फ एसक्यूएल इंजेक्शन नहीं। लेकिन यदि आप इसे प्रदर्शित करने से पहले हमेशा उपयोगकर्ता नाम एन्कोड कर रहे हैं, जैसा कि आप होना चाहिए, तो यह एक गैर-मुद्दा है। – rmeador