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

यूआरएल में भेजे जाने वाले चर को हैश करना या एन्क्रिप्ट करना

अधिकांश एन्क्रिप्शन (या हैशिंग, आदि) रूटीन का आउटपुट मनमाना बाइनरी डेटा है, जिसे बिना एन्कोडिंग के URL में सुरक्षित रूप से शामिल नहीं किया जा सकता है।

एग्याल नोट्स के रूप में , बस urlencode() . का उपयोग करके डेटा पर पर्याप्त होना चाहिए। हालांकि, मानक यूआरएल-एन्कोडिंग यादृच्छिक बाइनरी डेटा को एन्कोड करने का सबसे कॉम्पैक्ट तरीका नहीं हो सकता है। Base64 एन्कोडिंग अधिक कुशल होगा, लेकिन दुर्भाग्य से + . के उपयोग के कारण यह पूरी तरह से URL-सुरक्षित नहीं है चरित्र।

सौभाग्य से, बेस 64 एन्कोडिंग का एक मानकीकृत यूआरएल-सुरक्षित संस्करण मौजूद है, जिसे RFC 4648 "बेस 64url" के रूप में। PHP में इस एन्कोडिंग का उपयोग करके डेटा को एन्कोडिंग और डिकोडिंग के लिए कार्यों की एक जोड़ी है, इस उत्तर के आधार पर "गुट्ज़मर एट यूएसए डॉट नेट" :

function base64url_encode($data) {
    return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}

function base64url_decode($data) {
    return base64_decode(strtr($data, '-_', '+/'));
}

(मैंने डिकोडिंग फ़ंक्शन को थोड़ा सरल कर दिया है, क्योंकि PHP के कम से कम वर्तमान संस्करणों को स्पष्ट रूप से = की आवश्यकता नहीं है। base64_decode() . के इनपुट में वर्णों को पैड करना ।)

पी.एस. पहली बार में यादृच्छिक टोकन को सुरक्षित रूप से उत्पन्न करने के लिए, उदाहरण देखें। यह सवाल



  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 5.7.17 स्टार्टअप लॉग दिखा रहा है [नोट] उपयोगकर्ता 'UNKNOWN_MYSQL_USER' के लिए एक्सेस अस्वीकृत

  2. PHP - SQL क्वेरी के आसपास सिंगल कोट्स या डबल कोट्स?

  3. दो अक्षांश/लंबे बिंदुओं के बीच की दूरी ज्ञात करने का सबसे तेज़ तरीका

  4. MySQL में एक्सेंट सेंस्टिव प्राइमरी की का इस्तेमाल करें

  5. SQL SELECT स्टेटमेंट एक्सप्रेशन वैल्यू अन्य एक्सप्रेशन के लिए पुन:उपयोग करता है