2012-12-05 23 views
11

कहें कि मेरे पास मेरे मोंगोड में एक उत्पाद सरणी है। मैं चाहता हूं कि उपयोगकर्ता प्रत्येक उत्पाद को अपने पृष्ठ पर देख सकें: http://www.mysite.com/product/12345/Widget-Wodget। चूंकि प्रत्येक उत्पाद में वृद्धिशील पूर्णांक आईडी (12345) नहीं है लेकिन इसके बजाय इसमें एक बीएसओएन आईडी (5063a36bdeb13f7505000630) है, तो मुझे या तो पूर्णांक आईडी जोड़ने या बीएसओएन आईडी का उपयोग करने की आवश्यकता होगी।क्या मैं संवेदनशील डेटा का खुलासा कर रहा हूं यदि मैंने एक यूआरएल में एक बीएसओ आईडी डाली है?

  • 4-बाइट टाइमस्टैम्प,
  • 3-बाइट मशीन पहचानकर्ता,
  • 2-बाइट प्रक्रिया आईडी,
  • 3-बाइट काउंटर:

    BSON आईडी के बाद से पीआईडी ​​शामिल हैं।

क्या मैं अपने यूआरएल में बीएसओएन आईडी का उपयोग करता हूं, तो क्या मैं बाहरी दुनिया को सुरक्षित जानकारी उजागर कर रहा हूं?

+0

जिस तरह से मैं करता हूं, मैं आमतौर पर बेस 62 पर बेसन आईडी को एन्कोड करता हूं, वह भी यूआरएल शॉर्टिंग के लिए। लेकिन जहां तक ​​मुझे पता है कि ऐसा करने से कोई महत्वपूर्ण समस्या उत्पन्न नहीं हो सकती है। –

+0

@ सुशांत गुप्ता प्रासंगिक, उस मामले में: http://stackoverflow.com/questions/6338870/how-to-implement-a-short-url-like-urls-in-twitter – jcollum

+0

हाँ, यह ठीक काम करता है। लेकिन जिस तरह से मैं करता हूं, मुझे अपने यूआरएल शॉर्टिंग के लिए डेटाबेस या संग्रह को बनाए रखने की ज़रूरत नहीं है। यह एक त्वरित विधि है। अब तक मैं किसी भी सुरक्षा मुद्दे पर नहीं आया है :) –

उत्तर

15

मैं आपकी मशीनों पर विशेषाधिकार प्राप्त करने के लिए किसी भी उपयोग के बारे में नहीं सोच सकता, हालांकि ऑब्जेक्ट आईडी का उपयोग करके हर जगह बहुत सारी जानकारी प्रकट होती है।

अपनी वेबसाइट रेंगने करके, एक सकता है: उदाहरण के लिए, यदि काउंटर हिस्सा 0x से चला जाता है .... बी 1 0x के लिए .... बार t1 और के बीच B9:

  • कुछ छिपा वस्तुओं के बारे में लगता है टी 2, कोई इन इनवर्वल के भीतर ऑब्जेक्ट आईडी का अनुमान लगा सकता है। हालांकि, यदि आप एक्सेस अनुमतियों को लागू करते हैं तो
  • प्रत्येक उपयोगकर्ता की साइनअप दिनांक (बहुत संवेदनशील जानकारी नहीं है लेकिन कुछ भी बेहतर नहीं)
  • टाइमस्टैम्प से वास्तविक समय (सार्वजनिक रूप से उपलब्ध) के व्यावसायिक कार्यकाल को घटाएं कर्मचारियों द्वारा बनाई गई वस्तुओं का
  • कटौती करें कि आपके ऑडियंस किस समय से उपयोगकर्ता द्वारा जेनरेट की गई वस्तुओं के टाइमस्टैम्प से रहते हैं: यदि आपकी वेबसाइट वह है जो लोग ज्यादातर लंचटाइम पर उपयोग करते हैं, तो कोई ऑब्जेक्ट आईडी के शिखर को माप सकता है और उस पर एक चोटी 8 बजे यूटीसी का मतलब है कि दर्शक यूएस वेस्ट तट पर
  • और अधिक आम तौर पर, अपनी अधिकांश वेबसाइटों को क्रॉल करके, कोई भी आपकी सेवा की सफलता का समयरेखा बना सकता है, किसी दिए गए समय के ज्ञान के लिए: आपके उपयोगकर्ता की गिनती, उपयोगकर्ता सगाई के स्तर, आपके पास कितने सर्वर हैं, आपके सर्वर कितनी बार पुनरारंभ होते हैं। जबकि कार्य दिवस पर उन अधिक होने की संभावना दुर्घटनाओं + सॉफ्टवेयर संशोधन
  • और शायद अन्य जानकारी प्राप्त कर अपने व्यापार प्रक्रियाओं और डोमेन के लिए विशिष्ट

भी यादृच्छिक के साथ, निष्पक्ष बनाने के लिए कर रहे हैं सप्ताहांत पर होने वाली पीआईडी ​​परिवर्तन, अधिक संभावना है कि दुर्घटनाओं हैं ids कोई भी अनुमान लगा सकता है। मुख्य मुद्दा यह है कि आपको किसी को भी अपनी साइट के सांख्यिकीय रूप से महत्वपूर्ण हिस्से को स्क्रैप करने से रोकने की आवश्यकता है। लेकिन अगर कोई निर्धारित होता है, तो वे अंततः सफल होंगे, यही कारण है कि उन्हें यह अतिरिक्त, टाइमस्टैम्प जानकारी प्रदान करना गलत लगता है।

+2

मुझे छुपे ऑब्जेक्ट्स के बारे में समझ में नहीं आ रहा है, आप यह भी देखकर व्यवसाय के घंटों को कम कर सकते हैं कि आप कंपनी से कितनी बार संपर्क कर सकते हैं, ज्यादातर कंपनियों को अपनी साइट पर व्यावसायिक घंटे प्रदर्शित करना चाहिए। आईडी सर्वर की ओर बनाई जाती हैं ताकि वे सर्वर समय न हों, ग्राहक समय नहीं। वे आपके बीएसओएन आईडी से टाइमलाइन कैसे बना सकते हैं? आईडी या डेटाबेस के बारे में बताता है कि कुल मिलाकर भविष्यवाणी करने का कोई तरीका नहीं है।वे कैसे बता सकते हैं कि हटाए गए लोगों को हर एक आईडी को पूछे बिना आपने कितनी बार पुनरारंभ किया? – Sammaye

+0

@Sammaye: मैंने अपना जवाब संपादित कर लिया है, मुझे उम्मीद है कि यह स्पष्ट है – guillaume

+0

मुझे पहले बिंदु मिल गया है, लेकिन यह एक है जो एक वृद्धिशील आईडी के साथ मौजूद है और आरबीएएम द्वारा हल किया जाना चाहिए, लेकिन मुझे अभी भी दूसरों को नहीं मिला है, खासकर मुझे दूसरों को नहीं मिला ई-कॉमर्स साइट पर, जब तक कि वे उपलब्ध न हों तब तक हर कोई झूठ बोलता है। अधिकांश साइटों पर प्रत्येक उपयोगकर्ता की साइनअप तिथि बेकार है क्योंकि Google, facebook, यूट्यूब जैसी साइटें और कई अन्य लोग दिखाते हैं कि उपयोगकर्ता ने सही दिनांक फ़ॉर्म में साइन अप किया था, इसलिए उन आंकड़ों को वहां स्क्रैप करना आसान है। उपयोगकर्ता द्वारा उत्पन्न ऑब्जेक्ट्स में अभी भी एक सेरर-साइड ऑब्जेक्ट होगा, इसलिए मुझे अभी भी यह दिखाई नहीं दे रहा है। – Sammaye

2

ObjectID में जानकारी साझा करना आपकी सुरक्षा से समझौता नहीं करेगा। कोई ऑब्जेक्टआईड बनाया गया था (टाइमस्टैम्प) जैसे मामूली विवरणों का अनुमान लगा सकता है, लेकिन ऑब्जेक्टिड घटकों में से कोई भी प्रमाणीकरण या प्राधिकरण से बंधे नहीं होना चाहिए।

यदि आप ई-कॉमर्स साइट बना रहे हैं, तो एसईओ आम तौर पर सार्वजनिक यूआरएल के लिए एक मजबूत विचार है। इस मामले में आप आमतौर पर ऑब्जेक्ट आईडी से छोटे और अधिक अर्थपूर्ण पथ घटकों के साथ एक मित्रवत यूआरएल का उपयोग करना चाहते हैं।

ध्यान दें कि आपको अपने _id फ़ील्ड के लिए डिफ़ॉल्ट ऑब्जेक्ट आईडी का उपयोग करने की आवश्यकता नहीं है .. इसलिए हमेशा आपके एप्लिकेशन के लिए कुछ और प्रासंगिक उत्पन्न हो सकता है। डिफ़ॉल्ट ऑब्जेक्ट आईडी विशिष्टता की उचित गारंटी प्रदान करता है, इसलिए यदि आप अपना _id आवंटन लागू करते हैं तो आपको इसे ध्यान में रखना होगा।

यह भी देखें:

2

रूप @Stennie ने कहा, वास्तव में नहीं।

की पीआईडी ​​साथ शुरू करते हैं, सबसे हैकर्स एक पीआईडी ​​की तलाश में हैं नहीं परेशान, कहते हैं लिनक्स पर होते, बल्कि वे बस जाएगा:

ps aux | grep mongod 

या कुछ इसी तरह की। बेशक यह हैकर को वास्तव में आपके सर्वर को हैक करने की आवश्यकता है, मुझे पता है कि अकेले पिड के आधार पर कोई सार्वजनिक हैक उपलब्ध नहीं है। जब आप मशीन को पुनरारंभ करते हैं या mongod पर पिड को ध्यान में रखेगा, तो यह जानकारी जासूसी करने की कोशिश करने वाले किसी भी व्यक्ति के लिए बिल्कुल बेकार है।

मशीन आईडी एक और डेटा है जो सार्वजनिक रूप से बेकार है और ईमानदार होने के लिए, उन्हें मशीन आईडी के माध्यम से ping या digg का उपयोग करके अपने नेटवर्क की बेहतर समझ मिल जाएगी।

तो सवाल का जवाब देने के लिए: नहीं, कोई वास्तविक सुरक्षा खतरा नहीं है और जो जानकारी आप प्रदर्शित कर रहे हैं वह वास्तव में मोंगोडीबी को छोड़कर किसी के भी उपयोग नहीं है।

मैं भी @Stennie साथ एसईओ अनुकूल यूआरएल का उपयोग करने पर, एक उदाहरण है जो मैं आमतौर पर ई-कॉमर्स के लिए उपयोग एक छोटे यादृच्छिक आईडी के साथ /product/product_title_ है इस बात से सहमत पर .html के साथ या एक ऑटो बढ़ाने आईडी (शायद 64 एनकोड _id आधार) समाप्त।

+0

ऑब्जेक्ट आईडी आमतौर पर ड्राइवर द्वारा उत्पन्न होते हैं (मोंगोडीबी सर्वर नहीं) इसलिए जानकारी (पीआईडी, आदि) मोंगोडीबी के बजाए आवेदन से संबंधित होगी। विभिन्न प्रक्रियाएं (उदाहरण के लिए अपाचे वर्कर थ्रेड) पीआईडी ​​बदलती हैं ताकि आप एक विश्वसनीय अनुमान नहीं बना सकें कि पीआईडी ​​सर्वर रीस्टार्ट से संबंधित है। – Stennie