पृष्ठभूमि जानकारी डेटा एन्क्रिप्ट करने के नेटिव PHP समारोह ओवरलोडिंग:
मैं डेवलपर्स की एक टीम है कि एक वेब अनुप्रयोग है कि दुकानों और HIPAA (चिकित्सा) डेटा को पुन: प्राप्त चलाता है का हिस्सा हूँ। हाल ही में, एचआईपीएए दिशानिर्देशों को एक नीति शामिल करने के लिए अद्यतन किया गया था जिसके लिए सभी पहचानकर्ता ग्राहक जानकारी को "आराम पर" (डेटाबेस में संग्रहीत और एक्सेस नहीं किया जा रहा है) के रूप में एन्क्रिप्ट किया जाना आवश्यक है।के लिए HIPAA अनुपालन
प्रारंभिक समस्या
पहली समस्या से निपटने के लिए हम एक तरह से डेटा एक भंग की स्थिति में सुरक्षित बनाता है कि में डेटा एन्क्रिप्ट दो तरह का सबसे अच्छा तरीका निर्धारित करने गया था।
प्रारंभिक समाधान
तेज समाधान हम साथ आया mcrypt उपयोग करने के लिए डेटा इससे पहले कि हम यह डेटाबेस में डाला एन्क्रिप्ट करने के लिए किया गया था।
नई समस्या
आवेदन हम विकसित कर रहे हैं, (के रूप में वेब अनुप्रयोगों जाना) काफी पुराना है और प्रक्रियात्मक प्रोग्रामिंग का एक बहुत डालने के लिए, अद्यतन, पुनः प्राप्त mysql_query समारोह पर भारी निर्भरता के साथ ही उपयोग करता है और डेटा हटाएं हमारे पास डेटाबेस-एब्स्ट्रक्शन-लेयर पर हमारे कोड का अनुवाद करने का समय या विलासिता नहीं है। इसलिए, इस एन्क्रिप्शन/डिक्रिप्शन सिस्टम को लागू करने का एकमात्र तरीका mcrypt के माध्यम से एन्क्रिप्ट किए गए डेटा का उपयोग करने के लिए सभी सीआरयूडी क्वेरी मैन्युअल रूप से संपादित करना है। यह बहुत अक्षम और अत्यंत त्रुटि-प्रवण है।
हमारे प्रस्तावित समाधान
हमने निर्णय लिया है कि हमारे समस्या को हल करने का सबसे तेज और सबसे प्रभावी तरीका है हमारे खुद के तैयार करने से एक के साथ देशी mysql_query समारोह अधिलेखित करने के लिए है। हमारे नए फ़ंक्शन में, हम सर्वर को क्वेरी भेजने/परिणामसेट लौटने से पहले डेटा मानों को एन्क्रिप्ट/डिक्रिप्ट करेंगे।
आप लोगों
- में कहाँ आ यह हमारी प्रारंभिक समस्या को हल करने के लिए सबसे अच्छा समाधान है?
- आप मौजूदा, कोर PHP फ़ंक्शन को ओवरराइट करने के बारे में कैसे जाते हैं?
तो समस्या, जबकि यह DB सर्वर पर स्थानांतरित किया गया है डेटा एन्क्रिप्ट करने के लिए है? या इसे एन्क्रिप्टेड फैशन में स्टोर करें? –
इसे एन्क्रिप्टेड फैशन में संग्रहीत करने के लिए और फिर आसानी से पुनर्प्राप्त करें, डिक्रिप्ट करें और इसे आवश्यकतानुसार प्रदर्शित करें। –
मुझे लगता है कि आप गलत परत पर ऐसा कर रहे हैं। क्या आपने पूरे MySQL डेटाबेस को एन्क्रिप्ट करने पर विचार किया था? इसके लिए कुछ समाधानों पर चर्चा की गई है [इस सवाल] (http://stackoverflow.com/questions/143750/mysql-and-data-file-encryption)। –