2013-01-04 16 views
7

मैं एक छोटा सा वेब एप्लिकेशन बनाने की प्रक्रिया में हूं जिसमें डाले गए प्रत्येक व्यक्ति के लिए जानकारी के लगभग 10 टुकड़े होंगे। डेटा सुरक्षा के कारण इस जानकारी का बहुमत एन्क्रिप्ट किया जाना चाहिए।वाइल्डकार्ड एक MySQL डेटाबेस में एन्क्रिप्टेड डेटा की खोज?

कोडइग्निटर फ्रेमवर्क और कोडइग्निटर एन्क्रिप्शन क्लास का उपयोग करके मैं डेटाबेस में इसे संग्रहीत करने से पहले एप्लिकेशन पक्ष पर जानकारी को एन्कोड कर सकता हूं। कोडइग्निटर एन्क्रिप्शन क्लास एईएस_256 सिफर के साथ PHP के मैक्रिप्ट फ़ंक्शन का उपयोग करता है।

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

कोई भी शरीर इसी तरह की समस्या के समाधान के लिए आता है। मैंने MySQL AES_ENCRYPT और AES_DECRYPT के बारे में पढ़ा है लेकिन उन्हें अभी भी सादा पाठ में एक कुंजी आगे और आगे की आवश्यकता है जो मैं करने में अनिच्छुक हूं।

मैं वर्तमान में इस निष्कर्ष पर हूं कि यदि मैं इस मार्ग पर जारी रखना चाहता हूं तो एक पूर्ण तालिका डिक्रिप्शन हर बार एक खोज (स्पष्ट रूप से अच्छा नहीं) मेरा एकमात्र समाधान है।

उत्तर

6

ठीक है, आप पहले इसे डीकोड किए बिना डिक्रिप्ट किए गए टेक्स्ट में खोज नहीं सकते हैं, यह सच है।

हालांकि, इसका मतलब यह नहीं है कि इसके आसपास कोई रास्ता नहीं है। उदाहरण के लिए, आप अपने डेटा के inverted index और हैश (sha1, md5, crc32, pick one) खोज के लिए उपयोग की जाने वाली कुंजी बना सकते हैं। आपको बस इतना करना है कि आप खोज शब्द का उपयोग कर रहे हैं, उन्हें इंडेक्स में देखें और मेल खाने वाले किसी भी रिकॉर्ड को पुनर्प्राप्त करें, जो पूरी चीज के बजाय तालिका का केवल एक छोटा हिस्सा होगा।

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

+1

पार्श्व सोच के लिए +1, और संवेदनशील कीवर्ड सुनिश्चित करने के लिए हैशिंग का उपयोग अभी भी संवेदनात्मक रूप से बनाए रखा गया है –

+1

उत्तर के लिए हाय धन्यवाद, मुझे लगता है कि मैं समझता हूं कि आप क्या प्रस्तावित कर रहे हैं लेकिन सूचकांक अभी भी कम करने की कोशिश करते समय कम नहीं होगा 'where_in' या 'पसंद' खोज, उदाहरण के लिए: खोज% सीएचआर% इसमें सीआरआरआईएस शब्द के साथ एक रिकॉर्ड वापस कर देगा। हो सकता है कि मैं इसे गलत पढ़ रहा हूं, अगर आप थोड़ा सा विस्तार कर सकते हैं। – user1530205

+1

सही, वाइल्डकार्ड खोज वास्तव में उलटा इंडेक्स के साथ काम नहीं करती है, लेकिन सामान्य खोजों के साथ वास्तव में अच्छी तरह से काम करती है। वाइल्डकार्ड खोजों का एकमात्र तरीका यह है कि पूरी चीज को डिक्रिप्ट करना है। –

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