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

PHP और MySQL - स्रोत कोड में पासवर्ड से कैसे बचें?

जैसा आपने कहा, सबसे आसान तरीका है, कॉन्फ़िगरेशन फ़ाइल का उपयोग करना।

कई फ्रेमवर्क इसका उपयोग करते हैं (Zend , केकपीएचपी , कोहाना , आदि) और यह चीजों को करने का सबसे आम तरीका है (यहां तक ​​कि गैर-PHP वातावरण में भी जैसे ASP.NET में इसके web.config के साथ) फ़ाइलें)। यह आपको साइट के लिए फ़ाइलों की प्रतिलिपि बनाकर पर्यावरण से पर्यावरण में कॉन्फ़िगरेशन मानों की प्रतिलिपि बनाने की अनुमति देता है, जो सर्वर-सेटअप पर्यावरण चर (जो बहुत जल्दी खो सकता है और भूल सकता है) पर निर्भर होने पर एक लाभ है।

आपको पासवर्ड की अस्पष्टता के बारे में चिंता करने की आवश्यकता नहीं है क्योंकि यह विश्व-सुलभ फ़ाइल नहीं है, यह निश्चित रूप से वेब पहुंच योग्य नहीं होना चाहिए। इससे मेरा तात्पर्य यह है कि आप या तो क) अपने वेब सर्वर से कहें कि वह आपकी कॉन्फ़िगरेशन फ़ाइल पेश न करे ( आईआईएस web.config के साथ पहले से ही ऐसा करता है फ़ाइलें और सामग्री के बजाय एक HTTP 404.8 स्थिति प्रदान करता है) या बी) इसे अपनी वेब सेवा निर्देशिका से बाहर ले जाएं। अगर कोई आपकी कॉन्फ़िगरेशन फ़ाइल देख सकता है, तो यह आपके स्रोत कोड में होने से भी बदतर है।

कॉन्फ़िगरेशन फ़ाइल का एक आधार (खाली / डिफ़ॉल्ट) संस्करण होना और इसे प्रति वातावरण अलग करना भी एक अच्छा विचार होगा, ताकि आपके पास उत्पादन, विकास और परीक्षण प्लेटफ़ॉर्म के लिए एक अलग कॉन्फ़िगरेशन फ़ाइल हो सके।

इन परिवेशों के बीच अंतर करने के लिए एक पर्यावरण चर सबसे आम तरीका है, नीचे दिए गए कोड जैसा कुछ:

// Check if it's been set by the web server
if (!empty($_ENV['ENVIRONMENT'])) {
    // Copy from web server to PHP constant
    define('ENVIRONMENT', $_ENV['ENVIRONMENT']);
}

if (!defined('ENVIRONMENT')) {
    // Default to development
    define('ENVIRONMENT', 'development');
}

// Load in default configuration values
require_once 'config.default.php';

// Load in the overridden configuration file for this environment
require_once 'config.' . ENVIRONMENT . '.php';

एक और तरीका जो बहुत आम है वह है एक्सएमएल कॉन्फ़िगरेशन फ़ाइल का उपयोग करना और केवल उन मानों को पढ़ना जो आपको उपयुक्त हों (मेमोरी में कॉन्फ़िगरेशन फ़ाइल की कैश की गई प्रतिलिपि संग्रहीत करना)। PHP फ़ाइलों को मनमाने ढंग से शामिल करने की अनुमति देने के बजाय इसे केवल कुछ मूल्यों में लोड करने के लिए बहुत आसानी से प्रतिबंधित किया जा सकता है और यह मेरी राय में एक बेहतर समाधान है, लेकिन उपरोक्त आपको सही दिशा में शुरू करना चाहिए।

आप शायद अपने VCS चाहते हैं फ़ाइल को अनदेखा करने के लिए। दूसरी ओर, आप फ़ाइल का एक कंकाल चाहते हैं, या एक उचित चूक के साथ (बाद वाला निश्चित रूप से लॉगिन डेटा पर लागू नहीं होता है), संस्करण नियंत्रित होने के लिए। इससे निपटने का एक सामान्य तरीका एक चेक-इन टेम्पलेट कॉन्फ़िगरेशन फ़ाइल है, और स्थापना प्रक्रिया उस फ़ाइल को वास्तविक कॉन्फ़िगरेशन फ़ाइल के स्थान पर कॉपी करती है, जहाँ इसे अनुकूलित किया गया है। यह एक मैनुअल, या एक स्वचालित, प्रक्रिया हो सकती है।

(जबकि कुछ हद तक मुख्य प्रश्न से असंबंधित है, आपके पर्यावरण के लिए एक स्थिरांक का परिचय आपको कुछ अन्य अच्छी चीजें करने की अनुमति देता है जैसे कि एक लाइव के बजाय एक नकली मेल कार्यान्वयन को स्थगित करना एसएमटीपी एक, लेकिन निश्चित रूप से यह एक कॉन्फ़िगरेशन फ़ाइल के साथ भी किया जा सकता है)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Linux पर Mysql56 स्थापित करने के चरण

  2. MySQL व्यू कैसे काम करते हैं?

  3. Mysql कनेक्शन के लिए डिफ़ॉल्ट पोर्ट नंबर कैसे जांचें? कनेक्शन काम नहीं कर रहा! जेडीबीसी कनेक्शन

  4. जावा Android AsyncTask + mysql कनेक्शन

  5. नई ऑटो-इन्क्रीमेंट आईडी के साथ अपडेट कॉलम डालने से पहले MySQL ट्रिगर