php - यूआरएल में सच डेटाबेस वस्तु आईडी छिपा रहा है




mysql security (2)

  1. साइट से उद्धरण:

क्या आपके पास एक प्रश्न या टिप्पणी है जिसमें एक ही वाक्य में "सुरक्षा" और "हैशिड्स" शामिल हैं ? हैशिड का उपयोग न करें।

  1. मैं सही एन्क्रिप्शन एल्गोरिथ्म का उपयोग करता openssl_encrypt , जैसे फ़ंक्शन openssl_encrypt (उदाहरण के लिए), या ऐसा कुछ। और बाहर जाने पर आईडी को एन्क्रिप्ट करें, अपने कोड का उपयोग करते समय डिक्रिप्ट करें (जैसे डीबी प्रश्नों के लिए)।

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

सुरक्षा उद्देश्यों के लिए URL में ट्रू डेटाबेस ऑब्जेक्ट ID को छिपाने के लिए उपयोगी समाधान क्या होगा? मैंने पाया कि समाधान में से एक होगा:

1) हैशिड ओपन सोर्स प्रोजेक्ट का उपयोग करना

2) हैश उत्पन्न करने और डेटाबेस में संग्रहीत करने के लिए ऑब्जेक्ट के निर्माण पर उसी पुराने md5 जैसी किसी चीज़ का उपयोग करना, फिर इसका उपयोग url में करें और उनके द्वारा क्वेरी करें, लेकिन दोष यह है कि ऑटो-इन्क्रिम्ड प्राइमरी कीज़ (आईडी) से क्वेरी करना इससे अधिक तेज़ है हैश। इसलिए मेरा मानना ​​है कि हैश / अनश की संभावना बेहतर होगी?

जैसा कि मैं सिम्फनी पर हूं, क्या शायद ऐसे बंडल हैं जो मुझे नहीं मिल सकते हैं या उन कार्यात्मकताओं में बनाया गया है जो मदद करेंगे?

कृपया मुझे बताएं कि आपने अपने अनुभवों के आधार पर क्या उपयोगी पाया।


अपने विचार के बाद, आपको बस URL को HTML पेज पर लिखने से पहले अपनी आईडी को सिफर करना होगा और उन URL को संसाधित करते समय उन्हें डिक्रिप्ट करना होगा।

  • यदि आप अस्पष्टता से सिर्फ सुरक्षा चाहते हैं, जो कि पर्याप्त है, तो शायद 99% जिज्ञासु लोग हैं, जो URL में IDs से अधिक पुनरावृति करना पसंद करते हैं, आप कुछ सरल जैसे आधार 64 या रोट 13 का उपयोग करते हैं। बेशक, आप डेटाबेस में उन "सार्वजनिक आईडी" को संग्रहीत कर सकते हैं और स्टोर कर सकते हैं, जो हर बार एन्क्रिप्ट नहीं करते हैं, क्योंकि URL को अंतिम उपयोगकर्ता को दिखाया जा रहा है।
  • यदि आप सच्ची सुरक्षा चाहते हैं, तो आपको उन्हें कुछ गंभीर असममित साइबरफ़ॉर्म के साथ एन्क्रिप्ट करना होगा, दोनों कुंजियों को अपनी ओर से संग्रहीत करना होगा, जैसा कि आप अनिवार्य रूप से अपने आप से बात कर रहे हैं और एक आदमी के बीच का हमला नहीं चाहते हैं। यह आपको अलग-अलग करने में सक्षम नहीं होगा क्योंकि प्रत्येक एन्क्रिप्टिंग में अलग-अलग साइफ्राटेक्स्ट होगा, जो इस कारण के लिए अच्छा है।

किसी भी मामले में, आपको कुछ दो-तरफ़ा की ज़रूरत है, इसलिए यदि मैं होता तो मैं "हैश" शब्द के बारे में भूल जाता, हेज़ आपके लिए अलग उद्देश्यों के लिए हैं।

EDIT: लेकिन इसका समाधान जो हर ब्लॉग इस कार्य के लिए कई वर्षों से उपयोग करता है, वह केवल URL पुनर्लेखन, परिवर्तित करना, आपके मामले में, http://example.com/rework-by-37signals //example.com/book/5 जैसे URL से http://example.com/rework-by-37signals जैसे URL का उपयोग करना है। http://example.com/rework-by-37signals । यह आपके URL से डेटाबेस आईडी के किसी भी चिन्ह को पूरी तरह से मिटा देगा।

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





url-rewriting