2009-11-19 21 views
11

मैं सोच रहा था कि अगर किसी को भी किसी भी तकनीक भर में आया था सर्वर पर JSON प्रकार सेवाओं के माध्यम से अवगत कराया डेटा की संभावना को कम करने के लिए से डेटा कटाई को कम करने के बाहरी एजेंटों द्वारा काटा जा रहा से (AJAX कार्यों की आपूर्ति करने का इरादा) ।तकनीक AJAX/JSON सेवाओं

मुझे ऐसा लगता है कि इस समस्या को बहुत मुश्किल अगर आप कहते हैं कि एक फ्लैश ग्राहक डेटा लेने वाली थी नहीं है। फिर आप क्लाइंट को एन्क्रिप्टेड डेटा भेज सकते हैं, जो यह जान लेगा कि इसे कैसे डिक्रिप्ट करना है। हालांकि जावास्क्रिप्ट स्रोत की खुली प्रकृति के कारण AJAX के साथ एक ही विधि असंभव प्रतीत होती है।

क्या किसी ने यहां एक चालाक तकनीक लागू की है?

जो भी विधि, यह अभी भी एक वास्तविक AJAX समारोह डेटा का उपभोग करने के लिए अनुमति चाहिए।

ध्यान दें कि मैं वास्तव में यहाँ 'संवेदनशील' जानकारी की सुरक्षा के बारे में बात नहीं कर रहा हूँ, अजीब रिकॉर्ड बाहर लीक एक समस्या नहीं है। इसके बजाय मैं ऐसी स्थिति को रोकने के बारे में सोच रहा हूं जहां पूरा डीबी बॉट्स द्वारा उगाया जाता है (या तो एक बार में, या धीरे-धीरे समय के साथ)।

धन्यवाद।

उत्तर

7

पहले, मैं इस पर स्पष्ट करने के लिए करना चाहते हैं:

मुझे ऐसा लगता है कि इस समस्या इतना मुश्किल यदि आप एक फ्लैश ग्राहक डेटा लेने वाली कहना था नहीं है। फिर आप क्लाइंट को एन्क्रिप्टेड डेटा भेज सकते हैं, जो यह जानेगा कि इसे कैसे डिक्रिप्ट करें। एजेक्स के साथ असंभव प्रतीत होता है, हालांकि जावास्क्रिप्ट स्रोत की खुली प्रकृति के कारण।

यह बहुत स्पष्ट जानकारी फ्लैश ग्राहक & को एन्क्रिप्टेड भेजा जा रहा है यह नहीं होगा कि मुश्किल हमलावर पता लगाने के लिए के लिए से अपने फ़्लैश संकलित कार्यक्रम क्या इस के लिए इस्तेमाल किया जा रहा होगा - दोहराने & सब मिल वह डेटा

यदि डेटा आपके द्वारा विचार किए जाने वाले मूल्य के साथ होता है, तो आप उपर्युक्त पर भरोसा कर सकते हैं।

इस सार्वजनिक जानकारी है, तो गले लगा कि & यह मुकाबला नहीं है - के बजाय उस पर भुनाने के लिए तरीके खोजने।

यदि यह जानकारी है कि आप केवल उपयोगकर्ताओं के एक समूह को उजागर कर रहे हैं, तो सुनिश्चित करें कि आपके पास संबंधित प्रमाणीकरण/सुरक्षित संचार है। ट्रैक के उपयोग के रूप में दूसरों ने कहा है, और इसमें ऐसे उपाय हैं जो इस पर कार्य करते हैं,

+2

"यदि यह सार्वजनिक जानकारी है, तो उसे गले लगाओ और इसका मुकाबला न करें - इसके बजाय इसे कैपिटल करने के तरीके खोजें।" +1 –

+0

यूप, वह वाक्य अकेले एक +1 के लायक है। – anddoutoi

1

आप एक आंतरिक Memcached बॉक्स है, तो आप एक तकनीक जहां प्रत्येक IP कि एक घंटे की समय सीमा समाप्ति के साथ अपने सर्वर हिट के लिए एक प्रविष्टि बनाने के उपयोग करने पर विचार कर सकता है। फिर जब भी आईपी आपके AJAX एंडपॉइंट को हिट करता है तो उस मान को बढ़ाएं। यदि मूल्य किसी विशेष दहलीज पर हो जाता है, तो कनेक्शन को फ्राइज़ करें। यदि मूल्य मेमकैड में समाप्त हो जाता है, तो आप जानते हैं कि यह "दूर हो गया" नहीं हो रहा है।

1

यह अवधारणा के प्रमाण के साथ एक ठोस उत्तर नहीं है, लेकिन शायद आपके लिए एक प्रारंभिक बिंदु है। आप एक जावास्क्रिप्ट फ़ंक्शन बना सकते हैं जो एन्क्रिप्शन/डिक्रिप्शन फ़ंक्शंस प्रदान करता है। जावास्क्रिप्ट को गतिशील रूप से निर्मित करने की आवश्यकता होगी, और आप एक एन्क्रिप्शन कुंजी शामिल करेंगे जो सत्र के लिए अद्वितीय है। सर्वर की तरफ, आपके पास एक एन्क्रिप्शन सेवा होगी जो इसे देने से पहले अपने JSON को एन्क्रिप्ट करने के लिए सत्र से कुंजी का उपयोग करती है।

यह कम से कम, अपने वेब यातायात को सुनने के अपने डेटाबेस से जानकारी खींच से किसी को रोका जा सके।

हालांकि मैं kdgergory के साथ हूं, ऐसा लगता है जैसे आपका डेटा बहुत खुला है।

7

अपने डेटा चोरी करने से बॉट को रोकने के लिए पहली बात तकनीकी नहीं है, यह कानूनी है। सबसे पहले, सुनिश्चित करें कि आपकी साइट की उपयोग की शर्तों में सही भाषा है जिसे आप रोकने की कोशिश कर रहे हैं वास्तव में कानूनी दृष्टिकोण से अस्वीकृत और रक्षायोग्य है। दूसरा, सुनिश्चित करें कि आप अपनी तकनीकी रणनीति को कानूनी मुद्दों के साथ दिमाग में डिजाइन करें। उदाहरण के लिए, अमेरिका में, यदि आप प्रमाणीकरण बाधा के पीछे डेटा डालते हैं और हमलावर इसे चुरा लेता है, तो यह संभवतः violation of the DMCA law है। तीसरा, एक वकील ढूंढें जो आपको आईपी और डीएमसीए मुद्दों पर सलाह दे सकता है ... स्टैक ओवरव्लो पर अच्छे लोग पर्याप्त नहीं हैं। :-)

अब, तकनीक के बारे में:

एक उचित समाधान की आवश्यकता है कि इससे पहले कि वे अपने संवेदनशील अजाक्स कॉल करने के लिए उपयोग कर सकते हैं उन प्रमाणीकृत किया है। यह आपको अपने अजाक्स कॉल के प्रति उपयोगकर्ता उपयोग की निगरानी करने की अनुमति देता है और (मैन्युअल रूप से या स्वचालित रूप से) किसी भी उपयोगकर्ता के खाते को रद्द करता है जो किसी विशेष समय अवधि में बहुत से अनुरोध करता है। (या यदि आप एक ट्रिकल दृष्टिकोण के खिलाफ बचाव करने की कोशिश कर रहे हैं तो बहुत सारे अनुरोध)।

पाठ्यक्रम का यह दृष्टिकोण परिष्कृत बॉट्स के लिए कमजोर है जो स्वचालित रूप से नए "उपयोगकर्ताओं" को साइन अप करते हैं, लेकिन एक उचित अच्छे कैप्चा कार्यान्वयन के साथ, इस तरह के बॉट को बनाना मुश्किल है।(http://en.wikipedia.org/wiki/CAPTCHA पर "circumvention" अनुभाग देखें)

यदि आप सार्वजनिक डेटा (कोई प्रमाणीकरण नहीं) की रक्षा करने का प्रयास कर रहे हैं तो आपके विकल्प अधिक सीमित हैं। जैसा कि अन्य उत्तरों ने नोट किया है, आप आईपी-एड्रेस-आधारित सीमाओं का प्रयास कर सकते हैं (और बड़े कॉर्पोरेट प्रॉक्सी उपयोगकर्ताओं के पीछे भाग सकते हैं) लेकिन परिष्कृत हमलावर लोड को वितरित करके इसके आसपास हो सकते हैं। वहाँ likley परिष्कृत सॉफ्टवेयर भी है जो अनुरोध समय, अनुरोध पैटर्न, आदि जैसी चीजें देखता है और बॉट स्पॉट करने की कोशिश करता है। पोकर साइट्स, उदाहरण के लिए, इस पर बहुत समय बिताएं। लेकिन इस तरह के सिस्टम सस्ते होने की उम्मीद न करें। एक आसान बात यह है कि आप अपने वेब लॉग (उदाहरण के लिए Splunk का उपयोग करके) कर सकते हैं और अपनी साइट पर क्लिक करने वाले शीर्ष एन आईपी पते ढूंढ सकते हैं, और फिर उन पर एक रिवर्स-आईपी लुकअप करें। कुछ वैध कॉर्पोरेट या आईएसपी प्रॉक्सी होंगे। लेकिन यदि आप सूची में कॉम्पीटर के डोमेन नाम को पहचानते हैं, तो आप अपने डोमेन को ब्लॉक कर सकते हैं या अपने वकीलों के साथ अनुवर्ती कर सकते हैं।

प्री-चोरी रक्षा के अलावा, आप "शहद पॉट" डालने के बारे में भी सोचना चाहेंगे: जानबूझकर नकली जानकारी जिसे आप बाद में ट्रैक कर सकते हैं। उदाहरण के लिए, नक्शा निर्माताओं को प्लेगिरिज्म पकड़ते हैं: वे अपने नक्शे में एक नकली सड़क डालते हैं और देखते हैं कि कौन से अन्य मानचित्र एक ही नकली सड़क दिखाते हैं। हालांकि यह निर्धारित लोगों को आपके सभी डेटा को चूसने से नहीं रोकता है, यह आपको बाद में पता चलता है कि आपका डेटा दोबारा उपयोग कर रहा है। यह आपके टेक्स्ट आउटपुट में अद्वितीय टेक्स्ट स्ट्रिंग एम्बेड करके और फिर बाद में Google पर उन तारों को खोजकर किया जा सकता है (मान लीजिए कि आपका डेटा किसी अन्य सार्वजनिक वेबसाइट पर पुनः उपयोग करने योग्य है)। यदि आपका डेटा HTML या छवियां है, तो आप एक ऐसी छवि शामिल कर सकते हैं जो आपकी साइट पर वापस इंगित करे, और आप ट्रैक कर सकते हैं कि इसे कौन डाउनलोड कर रहा है, और उन पैटर्न की तलाश करें जिन्हें आप फ्रीलोडर को बस्ट करने के लिए उपयोग कर सकते हैं।

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

यह स्पष्ट है, लेकिन यदि आपका डेटा खोज इंजन द्वारा सार्वजनिक रूप से खोजने योग्य है, तो आपको दोनों के लिए एक गैर-AJAX समाधान की आवश्यकता होगी (Google आपके AJAX डेटा को नहीं पढ़ेगा!) और आप उनको चिह्नित करना चाहेंगे पेज NOARCHIVE इसलिए आपका डेटा Google के कैश में दिखाई नहीं देता है। आप शायद खोज इंजन क्रॉलर आईपी एड्रेस की एक सफेद सूची भी चाहते हैं, जिसे आप अपने खोज-इंजन-क्रॉल करने योग्य पृष्ठों में अनुमति देते हैं (आप इन्हें प्राप्त करने के लिए Google, Bing, याहू आदि के साथ काम कर सकते हैं), अन्यथा दुर्भावनापूर्ण बॉट आसानी से प्रतिरूपण कर सकते हैं Google और अपना डेटा प्राप्त करें।

निष्कर्ष में, मैं ऊपर @kdgregory गूंजना चाहता हूं: सुनिश्चित करें कि खतरे पर्याप्त है कि यह आवश्यक प्रयास के लायक है। कई कंपनियां इस हित को अधिक महत्व देती हैं कि अन्य लोग (वैध ग्राहक और घृणित अभिनेता दोनों) अपने व्यवसाय में हैं। यह हो सकता है कि आपका एक अजीब मामला है जहां आपके पास विशेष रूप से महत्वपूर्ण डेटा है, यह विशेष रूप से प्राप्त करने के लिए मूल्यवान है, इसे प्रमाणीकरण के बिना सार्वजनिक रूप से सुलभ होना चाहिए, और यदि कोई व्यक्ति आपका डेटा चुरा लेता है तो आपके कानूनी संसाधन सीमित होंगे। लेकिन वे सभी एक साथ स्वीकार्य रूप से एक असामान्य मामला है।

पीएस - इस समस्या के बारे में सोचने का एक और तरीका जो आपके मामले में लागू हो सकता है या नहीं। कभी-कभी यह बदलना आसान होता है कि आपका डेटा कैसे काम करता है जो इसे सुरक्षित करता है। उदाहरण के लिए, क्या आप अपनी साइट पर किसी सेवा में अपने डेटा को किसी भी तरह से जोड़ सकते हैं ताकि डेटा बहुत उपयोगी न हो जब तक कि इसका उपयोग आपके कोड के साथ नहीं किया जा रहा हो। या आप इसमें विज्ञापन एम्बेड कर सकते हैं, ताकि जहां भी दिखाया गया हो, आपको भुगतान मिलता है? और इसी तरह। मुझे नहीं पता कि इनमें से कोई भी कमी आपके मामले पर लागू होती है, लेकिन कई व्यवसायों ने इंटरनेट पर सामान मुक्त करने के तरीकों को पाया है (और व्यापक पुन: वितरण को रोकने के बजाए प्रोत्साहित करते हैं) और अभी भी पैसा कमाते हैं, इसलिए एक संकर मुक्त/वेतन रणनीति आपके मामले में संभव हो सकती है (या नहीं)।

+0

कानूनी ढांचे का हवाला देते हुए और डेवलपर की रक्षा करने का प्रयास करके तकनीकी समुदाय के लिए बेहद आक्रामक होने के बीच यह एक बढ़िया रेखा है। यह रिकॉर्डिंग उद्योग की तरह है जो 80 के दशक में संगीत वितरण को प्रोत्साहित करता है और फिर 2000 के दशक में एक पूरी पीढ़ी को लॉब्रेकर्स के रूप में बदलता है और उपयोगकर्ता-वितरण तकनीक हानि रहित हो जाता है। यदि आप सार्वजनिक डेटा प्रकाशित करते हैं तो आप दूसरों को देखना नहीं चाहते हैं तो इसे लॉक करें - तथ्यों के बाद नियमों और शर्तों वाले लोगों के पीछे पीछा न करें। –

+0

मैं मानता हूं, कानून अच्छे तकनीकी समाधानों को न समझने का बहाना नहीं है। मेरे पास वास्तव में मेरे "कानूनी" सुझाव के साथ एक विशिष्ट परिदृश्य था: यदि एक निर्धारित, अच्छी तरह से वित्त पोषित प्रतियोगी (बहुत से व्यक्तिगत उपयोगकर्ता नहीं) आपके सभी डेटा चोरी करने का निर्णय लेते हैं, चाहे आप जो भी तकनीकी रोडब्लॉक लगाएंगे, वह बुरा होगा अगर आपके पास उन्हें रोकने के लिए कोई कानूनी लाभ नहीं है। मैं इस समस्या के रिकॉर्ड उद्योग के दृष्टिकोण का समर्थन करने का मतलब नहीं था, या किसी भी तरह की बात - माफ करना अगर मैं इस तरह से आया। –

+0

बस आपको बताने के लिए - मैंने इसे स्वीकार्य उत्तर के रूप में चिह्नित किया होगा, लेकिन दुर्भाग्य से बक्षीस के अंत में कंप्यूटर से दूर था। – UpTheCreek

1

कुछ तकनीकों को Further thoughts on hindering screen scraping में सूचीबद्ध किया गया है।

यदि आप PHP का उपयोग करते हैं, तो Bad behavior सहायता के लिए एक अच्छा टूल है। यदि आप PHP का उपयोग नहीं करते हैं, तो यह फ़िल्टर करने के तरीके पर कुछ विचार दे सकता है (How it works पृष्ठ देखें)।

Incredibill's blog अच्छा सुझावों दे रहा है, उपयोगकर्ता-एजेंट की सूची/आईपी ब्लॉक करने के लिए पर्वतमाला, आदि ...

+0

धन्यवाद, कुछ अच्छे सुझाव हैं। – UpTheCreek

1

यहाँ सुझावों की एक किस्म है:

  1. अंक प्रत्येक के साथ मोचन के लिए आवश्यक टोकन AJAX अनुरोध। टोकन का विस्तार करें।
  2. ट्रैक करें कि प्रत्येक ग्राहक से कितने प्रश्न आ रहे हैं, और आपकी साइट के अपेक्षित सामान्य उपयोग के आधार पर अत्यधिक उपयोग थ्रॉटल करें।
  3. अनुक्रमिक प्रश्नों, अनुरोधों में स्पाइक्स, या मानव से अधिक तेज़ी से होने वाले प्रश्नों के उपयोग में पैटर्न की तलाश करें।
  4. उपयोगकर्ता-एजेंटों की जांच करें। कई बॉट ब्राउज़र की उपयोगकर्ता एजेंट जानकारी को पूरी तरह से दोहराते नहीं हैं, और आप इस विधि का उपयोग करके अपने डेटा के प्रोग्रामिक स्क्रैपिंग को खत्म कर सकते हैं।
  5. अनुरोध सीमा पार होने के बाद कैप्चा (या कुछ अन्य मानव सत्यापन तंत्र) पर रीडायरेक्ट करने के लिए अपनी वेबसाइट के फ्रंट-एंड घटक को बदलें।
  6. अपने तर्क को संशोधित करें ताकि पार्स को आवश्यक कोड को जटिल करने के लिए respsonse डेटा को कुछ अलग तरीकों से वापस कर दिया जाए।
  7. अपने क्लाइंट-साइड जावास्क्रिप्ट को देखें।
  8. अपमानजनक ग्राहकों के ब्लॉक आईपी।
0

बॉट आमतौर पर जावास्क्रिप्ट का विश्लेषण नहीं करते हैं, इसलिए आपका AJAX कोड तुरंत निष्पादित नहीं किया जाएगा।और यदि वे भी करते हैं, तो बॉट आमतौर पर सत्र/कुकीज़ को भी बनाए रखता नहीं है। यह जानकर, आप अनुरोध को अस्वीकार कर सकते हैं यदि इसे वैध सत्र/कुकी के बिना बुलाया जाता है (जिसे स्पष्ट रूप से मूल पृष्ठ पर अनुरोध द्वारा सर्वर पक्ष पर सेट किया गया है)।

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

संबंधित मुद्दे