आपकी क्वेरी स्ट्रिंग में जो कुछ भी है, वह अंतिम उपयोगकर्ता द्वारा देखने योग्य और परिवर्तनीय है। इसका अर्थ यह है कि उनके पास डेटा को देखने या एक्सेस करने, या आपकी साइट/ऐप के व्यवहार को प्रभावित करने के लिए इसे बदलने की क्षमता है। तो यह कहने के बिना चला जाता है कि आप क्वेरी स्ट्रिंग पर कुछ भी भरोसा नहीं करते हैं, और इसका उपयोग करने से पहले सब कुछ जांचें। जब आप इसे चेक करते हैं, तो उन चीज़ों की जांच न करें जो गलत इसके साथ (यह एक अनंत सूची हो सकती है), इसके बजाय सही जैसी चीज़ों की जांच करें। यदि आपके चेक में से कोई भी विफल रहता है तो आपको क्वेरी स्ट्रिंग डेटा को त्यागना चाहिए, या इसे संदिग्ध के रूप में व्यवहार करना चाहिए। यदि आपने क्वेरी स्ट्रिंग पर डेटा एन्क्रिप्ट किया है या एन्कोड किया है तो उपयोगकर्ता के साथ गड़बड़ होने पर यह अभी भी अनपेक्षित साइड इफेक्ट्स हो सकता है और आप अंधेरे से भरोसा करते हैं, भले ही उपयोगकर्ता के परिवर्तन एन्कोडिंग के कारण गैरकानूनी हों।
क्वेरी स्ट्रिंग में संवेदनशील डेटा संग्रहीत करने के साथ मैं जो दृष्टिकोण लेता हूं वह ऐसा नहीं करना है; इसके बजाय मैं संवेदनशील डेटा सर्वर पक्ष (सत्र, कैश या डेटाबेस में एक तालिका में) संग्रहीत करूंगा, और उसके बाद क्वेरी स्ट्रिंग में इसे यादृच्छिक रूप से जेनरेट की गई कुंजी (आमतौर पर एक GUID) होगी, ताकि यूआरएल दिखाई दे इस तरह:
http://myurl.com/myPage.aspx?secretKey=73FA4A5A85A44C75ABB5E323569628D3
यह बल एक GUID और एक GUID टकराव की संभावना infinitesimally छोटे हैं, इसलिए यदि क्वेरी स्ट्रिंग के साथ अंत उपयोगकर्ता भोजनालयों तो वे अंत में कुछ भी नहीं हो रही है जानवर करने के लिए नहीं बल्कि मुश्किल है।
यह दृष्टिकोण भी अच्छी तरह से काम करता है जब मुझे कई चीजें स्टोर करने की आवश्यकता होती है और क्वेरीस्ट्रिंग बहुत लंबा हो जाती है - ट्रैक किए जाने वाले डेटा को उस ऑब्जेक्ट में रखा जा सकता है जिसे सत्र या कैश में संग्रहीत किया जाता है, और एक बार फिर GUID का उपयोग इसकी कुंजी के रूप में किया जाता है।
लंबाई को भी ध्यान में रखना चाहिए क्योंकि कुछ ब्राउज़रों की सीमा है। – Victor
यूआरएल केस-अज्ञेय – IrishChieftain
हैं, मैं क्वेरीस्ट्रिंग के विकल्प के रूप में एमवीसी शैली यूआरएल रूटिंग में एक नज़र डालने का प्रयास करता हूं। – asawyer