Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

यूआरएल में सही डेटाबेस ऑब्जेक्ट आईडी छुपा रहा है

अलग-अलग शब्द चयन के साथ यह प्रश्न बहुत अधिक पूछा गया है (जिससे यह कहना मुश्किल हो जाता है, "बस इसे खोजें!")। इस तथ्य ने एक ब्लॉग पोस्ट को प्रेरित किया, जिसका शीर्षक था, The PHP में URL पैरामीटर एन्क्रिप्शन के लिए व्यापक गाइड

लोग यहां क्या करना चाहते हैं

लोगों को इसके बजाय क्या करना चाहिए

स्पष्टीकरण

आमतौर पर, लोग संक्षिप्त चाहते हैं यादृच्छिक दिखने वाले यूआरएल। यह आपको एन्क्रिप्ट करने के बाद प्रमाणित करने के लिए अधिक जगह नहीं देता है डेटाबेस रिकॉर्ड आईडी जिसे आप अस्पष्ट करना चाहते हैं। ऐसा करने के लिए 32 बाइट्स (HMAC-SHA256 के लिए) की न्यूनतम URL लंबाई की आवश्यकता होगी, जो बेस 64 में एन्कोड किए जाने पर 44 वर्णों की होती है।

एक आसान रणनीति एक यादृच्छिक स्ट्रिंग उत्पन्न करना है (देखें random_compat random_bytes() . के PHP5 कार्यान्वयन के लिए और random_int() इन स्ट्रिंग्स को उत्पन्न करने के लिए) और इसके बजाय उस कॉलम का संदर्भ लें।

साथ ही, हैशिड टूट गए हैं सरल क्रिप्टोनालिसिस द्वारा। उनका निष्कर्ष बताता है:

<ब्लॉककोट>

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

इस पर भरोसा न करें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL मिलीसेकंड/माइक्रोसेकंड परिशुद्धता का समर्थन क्यों नहीं करता है?

  2. कैसे mysql चयन क्वेरी में दो तिथियों के बीच की तारीखों की सूची प्राप्त करने के लिए?

  3. mySQL में ऑर्डर द्वारा कस्टम ऑर्डर कैसे परिभाषित करें?

  4. MySQL में REGEXP_INSTR () फ़ंक्शन कैसे काम करता है

  5. यह SQL कोड त्रुटि 1066 क्यों देता है (अद्वितीय तालिका/उपनाम नहीं:'उपयोगकर्ता')?