दिलचस्प पोस्ट
सोलर में "मल्टिवल्यूड" फ़ील्ड प्रकार का क्या उपयोग है? PHP में सभी सर्वर के सत्रों के माध्यम से लूपिंग एंड्रॉइड के वेबदृश्य में जावास्क्रिप्ट से रिटर्न वैल्यू कैसे प्राप्त करें? मैं कैसे जांचूं अगर फ़ाइल jQuery या शुद्ध जावास्क्रिप्ट में मौजूद है? $ Location.path के साथ AngularJS पेजिंग लेकिन कोई ngView पुनः लोड नहीं रीडायरेक्ट और नेविगेशन / अग्रेषित और क्या इस्तेमाल करने के दौरान क्या अंतर है? AJAX पृष्ठ प्रगति डाउनलोड करें CSS3 एनिमेशन के साथ पृष्ठभूमि छवि बदलना PHP के साथ पीडीएफ बनाने का सबसे अच्छा तरीका सृजन टाइमस्टैम्प और हाइबरनेट और MySQL के साथ अंतिम अपडेट टाइमस्टैम्प जैक्सन बनाम। जीएसएन PHP के माध्यम से MySQL डाटाबेस आउटपुट प्राप्त करें जावा: इंस्टासॉफ और जेनरिक्स सॉकेट: जावा का उपयोग कर पोर्ट की उपलब्धता का पता लगाएं सी ++ में कार्य करने के लिए एआरएज़ पास करना

PHP में दो-तरफ़ा एन्क्रिप्शन

मेरा आवेदन (स्पष्टतः) रिकॉर्डों को अलग करने के लिए एक अद्वितीय आईडी का उपयोग करता है। यह यूआईडी यूआरएल में पारित किया गया है (जैसे ./examplepage.php?UID=$example_int ), अन्य बातों के अलावा

हालांकि मुझे यकीन है कि ग्राहकों को अन्य क्लाइंट्स डेटा तक नहीं पहुंचने के लिए सर्वर-साइड ./examplepage.php?EUID=$encrypted_int (जैसे ./examplepage.php?EUID=$encrypted_int ), किसी को सोचने की संभावना को और कम करने के लिए "अरे, क्या होगा अगर मैं इस पूर्णांक को बढ़ाता?"

TIA।

वेब के समाधान से एकत्रित समाधान "PHP में दो-तरफ़ा एन्क्रिप्शन"

आईडी के बगल में एक हैश रखकर यह सुनिश्चित करने के लिए कि सुरक्षा है, या अतिरिक्त डेटा के साथ आईडी को पैडिंग या यहां तक ​​कि आईडी को हेक्स में परिवर्तित करने से मुझे लगता है कि काफी अच्छी तरह से काम करेंगे।

PHP 5.3 ने एक नई एन्क्रिप्शन विधि पेश की है जो वास्तव में प्रयोग करने में आसान है: openssl_encrypt और openssl_decrypt यह यहां अच्छी तरह से प्रलेखित नहीं है, इसलिए यहां एक सरल उदाहरण है:

 $textToEncrypt = "My super secret information."; $encryptionMethod = "AES-256-CBC"; // AES is used by the US gov't to encrypt top secret documents. $secretHash = "25c6c7ff35b9979b151f2136cd13b0ff"; //To encrypt $encryptedMessage = openssl_encrypt($textToEncrypt, $encryptionMethod, $secretHash); //To Decrypt $decryptedMessage = openssl_decrypt($encryptedMessage, $encryptionMethod, $secretHash); //Result echo "Encrypted: $encryptedMessage <br>Decrypted: $decryptedMessage"; 

मैंने 256-एईएस चुना क्योंकि यह ठोस और तेज़ है यह अमेरिकी गुप्तचर दस्तावेजों को एन्क्रिप्ट करने के लिए अपनाया गया है। यह तेजी से मशीन और सॉफ्टवेयर पर विचार कर रहा है यहां उपलब्ध एन्क्रिप्शन विधियों की एक सूची है:

एईएस-128-सीबीसी, एईएस-128-सीएफबी, एईएस-128-सीएफबी 1, एईएस-128-सीएफबी 8, एईएस-128-ईसीबी, एईएस-128-ओएफबी, एईएस -192-सीबीसी, एईएस -192-सीएफबी, एईएस- 1 9 2-सीएफबी 1, एईएस -192-सीएफबी 8, एईएस -192-ईसीबी, एईएस -192-ओएफबी, एईएस -256-सीबीसी, एईएस -256-सीएफबी, एईएस -256-सीएफबी 1, एईएस -256-सीएफबी 8, एईएस -256- ईसीबी, एईएस -256-ओएफबी, बीएफ-सीबीसी, बीएफ-सीएफबी, बीएफ-ईसीबी, बीएफ-ओएफबी, सीएएमएलएलआईएआई-128-सीबीसी, सीएएमएलएलएए-128-सीएफबी, सीएएमएलएलएए-128-सीएफबी 1, सीएएमएलएलएएए-128-सीएफबी 8, सीएएमएलएलएए- 128-ईसीबी, CAMELLIA-128-OFB, CAMELLIA-192-CBC, CAMELLIA-192-CFB, CAMELLIA-192-CFB1, CAMELLIA-192-CFB8, CAMELLIA-192-ECB, CAMELLIA-192-OFB, CAMELLIA-256- सीबीसी, सीएएमएलएलआईएआ -256-सीएफबी, सीएएमएलएलएआ -256-सीएफबी 1, सीएएमएलएलएआ -256-सीएफबी 8, सीएएमएलएलएआ -256-ईसीबी, सीएएमएलएलएए -256-ओएफबी, कास्ट 5-सीबीसी, कैस्ट 5-सीएफबी, कास्ट 5-ईसीबी, कास्ट 5-ओएफबी, डीईएस- सीबीसी, डीईएस-सीएफ़बी, डीईएस-सीएफबी 1, डीईएस-सीएफबी 8, डीईएस-ईसीबी, डीईएस-एडीई, डीईएस-एडीई-सीबीसी, डीईएस-ईडीई-सीएफ़बी, डीईएस-एडीई-ओएफबी, डीईएस-एडीईई 3, डीईएस-ईईडीई 3-सीबीसी, डीईएस-ईडीई 3-सीएफबी, डीईएस-एडीई 3-सीएफबी 1, डीईएस-ईडीई 3-सीएफबी 8, डीईएस-ईडीई 3-ओएफबी, डीईएस-ओएफबी, डीईएसएक्स-सीबीसी, आरसी 2-40-सीबीसी, आरसी 2-64-सीबीसी, आरसी 2-सीबीसी, आरसी 2- सीएफबी, आरसी 2-ईसीबी, आरसी 2-ओएफबी, आरसी 4, आरसी 4-40, सीड-सीबीसी, सीड-सीएफबी, सीड-ईसीबी, सीड-ओएफबी, एईएस-128-सीबीसी, एईएस-128-सीएफबी, एईएस-128-सीएफबी 1, एईएस 1 28-सीएफबी 8, एईएस-128-एसीबी, एईएस-128-बीबी, एईएस -192-सीबीसी, एईएस -192-सीएफबी, एईएस -192-सीएफबी 1, एईएस -192-सीएफबी 8, एईएस -192-एसीबी, एईएस -192- ofb, aes-256-cbc, aes-256-cfb, aes-256-cfb1, aes-256-cfb8, aes-256-ecb, aes-256-ofb, bf-cbc, bf-cfb, bf-ecb, बीएमएफ-ओबीबी, कमेलिया-128-सीबीसी, कैमेलिया-128-सीएफबी, कैमिलिया-128-सीएफबी 1, कैमेलिया-128-सीएफबी 8, कमेलिया-128-एसीबी, कैमेलिया-128-ओबीबी, कमेलिया -192-सीबीसी, कैमेलिया -192- सीएफबी, कैमेलिया -192-सीएफबी 1, कैमेलिया -192-सीएफबी 8, कमेलिया -192-एसीबी, कैमेलिया -192-केबी, कैमेलिया -256-सीबीसी, कैमेलिया -256-सीएफबी, कैमिलिया -256-सीएफबी 1, कैमेलिया -256-सीएफबी 8, कैमेलिया -256-एसीबी, कैमेलिया -256-के बीबी, कास्ट 5-सीबीसी, कास्ट 5-सीएफबी, कास्ट 5-एसीबी, कास्ट 5-ओबीबी, डेस-सीबीसी, डेस-सीएफबी, डेस-सीएफबी 1, डेस-सीएफबी 8, डेस-एसीबी, डेस- एडीई, डेस-एडीई-सीबीसी, डेस-एडीई-सीएफबी, डेस-एडे-ऑफ-बीबी, डेस-एडे 3, डेस-एडीई 3-सीबीसी, डेस-एडीई 3-सीएफबी, डेस-एडीई 3-सीएफबी 1, डेस-ईडे 3-सीएफबी 8, डेस- ede3-ofb, des-ofb, desx-cbc, rc2-40-cbc, rc2-64-cbc, rc2-cbc, rc2-cfb, rc2-ecb, rc2-ofb, rc4, rc4-40, बीज-सीबीसी, बीज-सीएफबी, बीज-एक्सीबी, बीज-ओबीबी


महत्वपूर्ण अद्यतन !!!

धन्यवाद आवो और जोरविन इंगित करने के लिए कि PHP 5.3.3 में> एक ​​नया पैरामीटर है जो इस फ़ंक्शन को थोड़ा अधिक सुरक्षित बनाता है

जोरविन ने अपनी टिप्पणी में इस लिंक का संदर्भ दिया , और यहां एक अंश है जो लागू है:

5.3.3 में उन्होंने एक नया पैरामीटर जोड़ा, string $iv (प्रारंभिक वेक्टर) असली पैरामीटर हैं: string openssl_encrypt ( string $data , string $method , string $password, bool $raw_output = false, string $iv )

यदि $iv अनुपलब्ध है, तो एक चेतावनी जारी की जाती है: "रिक्त प्रारंभिक वेक्टर (iv) का उपयोग करना संभवतः असुरक्षित है और इसकी अनुशंसित नहीं है"।

यदि $iv बहुत छोटा है, तो एक और चेतावनी है: "चतुर्थ पास केवल 3 बाइट्स लंबा है, साइफर को उम्मीद है कि वह एक चौथाई के ठीक 8 बाइट्स, पैडिंग \

वही IV को openssl_decrypt() में प्रयोग किया जाना चाहिए

आपको दो तरह से एन्क्रिप्शन की आवश्यकता नहीं है – एन्क्रिप्शन गोपनीयता बनाए रखने के लिए है, लेकिन जो वास्तव में आप यहां देख रहे हैं वह प्रामाणिकता है

एचएमएसी (अनिवार्यतः, कुंजी वाले हैश) क्रिप्टोग्राफिक प्रामाणिकता प्राप्त करने का एक तरीका है। यूआईडी के साथ एचआईएमएसी के साथ यूआईडी (PHP में एक एचएमएसी कार्यान्वयन है ), एक ऐसी कुंजी का उपयोग करके जो केवल सर्वर जानता है प्रत्येक अनुरोध की शुरुआत में, एचएमएसी की जांच करें।

असल में, सही काम के लिए सही उपकरण का उपयोग करें।

जबकि PHP कई दो तरह से हैशिंग एल्गोरिदम का समर्थन करता है, मुझे इस उदाहरण में उपयोगी नहीं दिखता है। आपको क्या करने की आवश्यकता है:

  1. प्रदान की गई आईडी द्वारा संग्रहण से पंक्ति लोड करें
  2. जांचें कि पंक्ति का स्वामी प्रमाणीकृत उपयोगकर्ता है और यदि कोई अपवाद नहीं फेंकता है और उपयोगकर्ता को फिर से ऐसा करने के लिए सूचित नहीं करता है

लेकिन अगर आपका ह्शिंग हंसिंग पर सेट है तो सिर्फ एक एल्गोरिदम को चुनिए ।

दो तरह से एन्क्रिप्शन की जाँच करें mcrypt के लिए , या यदि आप एक शुद्ध कार्यान्वयन phpseclib पसंद करते हैं।

सबसे पहले, यूआरएल पैरामीटर एन्क्रिप्ट करना आमतौर पर एक बुरा विचार है , और एक अलग लुकअप (सीएसपीआरएनएन द्वारा उत्पन्न एक इंडेक्स CHAR स्तंभ के आधार पर) 99.9% उपयोग मामलों के लिए बेहतर है।

उस ने कहा: हाँ, आप एस्प्रॅडले जैसे डेटा को एन्क्रिप्ट करने के लिए ओपनएसएसएल एक्सटेंशन ( एमक्रिप्शन का उपयोग न करें ) का उपयोग कर सकते हैं, हालांकि मैं आपको केवल एन्क्रिप्शन पर रोक नहीं करने के लिए सावधानी बरतता हूं।

संदेश प्रमाणीकरण के बिना एन्क्रिप्शन ख़तरनाक है , खासकर यदि आप सिफ़रटेक्स्ट के साथ एंड-यूज़र पर भरोसा कर रहे हैं।

इसलिए समाधान, प्रमाणीकृत एन्क्रिप्शन का उपयोग करना है , जिसे आसानी से पीडब्लूसीएल पर उपलब्ध लिब्बोडियम से एक्सेस किया जा सकता है।

यदि आप किसी भी कारण से पीईसीएल विस्तार स्थापित नहीं कर सकते, तो दो PHP पुस्तकालयों में से चुनने के लिए: defuse / php-encryption और zend-crypt । वे दोनों मानकों को मान्य प्रमाणित एन्क्रिप्शन प्रदान करते हैं और वे उपयोग करने के लिए दोनों सुरक्षित हैं (जो कि इसके लायक है, मैं अक्सर PHP में क्रिप्टोग्राफी कार्यान्वयन के लिए कोड ऑडिट करता हूं, मैं केवल इंटरनेट पर कुछ यादृच्छिक व्यक्ति नहीं हूं)।