2012-04-16 13 views
13

संभव डुप्लिकेट:
How to secure database passwords in PHP?कहाँ डेटाबेस संवेदनशील जानकारी डाल करने के लिए

हाल ही में मैं एक वेबसाइट परियोजना जो PHP में किया जाना चाहिए था दिया गया था, लेकिन मैं कुछ ख़ास नहीं है PHP में अनुभव। वैसे भी, यह ऊपर और चल रहा है लेकिन सुधार करने के लिए एक बड़ा कमरा है। एक चीज जिसे मैं अच्छी तरह से महसूस नहीं कर रहा हूं वह तरीका है जिस तरह से मैं डेटाबेस से निपट रहा हूं: मैंने डेटाबेस कनेक्शन जानकारी को एक अलग db.php फ़ाइल में रखा है और जहां आवश्यक हो उसे शामिल करें। लेकिन मुझे सर्वर द्वारा कई बार वापस लौटाए गए PHP स्रोत फ़ाइलों को याद रखना याद है।

तो अब मेरा प्रश्न है: डाटाबेस संवेदनशील डेटा डालने के लिए बेहतर या सबसे अच्छा तरीका/स्थान क्या है?

वैसे, PHP कैसे वेब गलत होने पर त्रुटि संदेशों को दिखाने के लिए नहीं देते हैं? Php.ini में कहीं भी कस्टम त्रुटि पृष्ठ या सेटिंग्स? धन्यवाद!

नोट: मैं PHP का उपयोग अपने पुराने स्वाद में ऑब्जेक्ट उन्मुख तरीके से नहीं कर रहा हूं।
आप अपने संवेदनशील डेटा रख सकते हैं: लेकिन मैं वस्तु उन्मुख या MVC तरह से करने के लिए खुला अगर वहाँ बेहतर हैं हूं कि जिस तरह से भविष्य की परियोजनाओं के

+0

अच्छे, महत्वपूर्ण प्रश्न! सुरक्षा की सोच के लिए +1। – David

+4

आपके रास्ते के लिए, ['display_errors'] (http://www.php.net/manual/en/errorfunc.configuration.php#ini.display-errors) ** हमेशा ** बंद होना चाहिए एक उत्पादन सर्वर पर। इस तरह, PHP वास्तविक त्रुटि दिखाने के बजाय 500 त्रुटि फेंक देगा। –

+0

मुझे लगता है कि php में display_errors = off।ini को – anuragsn7

उत्तर

7

अगर यह है कि आप क्या देख रहे हैं मैं नहीं जानता के लिए तैयार करने के लिए दृष्टिकोण अपने db.php में, लेकिन वेब रूट निर्देशिका (public_html या www) के बाहर।

उदाहरण के लिए, आपके पास कॉन्फ़िगर नामक निर्देशिका हो सकती है जो आपकी वेब रूट निर्देशिका का एक भाई है, और वहां अपनी db.php फ़ाइल संग्रहीत करें।

require_once('../config/db.php'); 

मुझे आशा है कि इस मदद करता है:

आप इस तरह अपने db.php फ़ाइल को शामिल कर सकते हैं।

+2

+1 इसके लिए +1 समाधान, इस फ़ाइल के अधिकारों को निम्नतम में बदलने के लिए भी भूलना नहीं है लेकिन अभी भी वेबसर्वर द्वारा पठनीय है। अगर फ़ाइल वेबसर्वर प्रक्रिया के स्वामित्व में है, तो शायद '0600' पर्याप्त सुरक्षित होगा? –

1

इसे डीबी.एफ़.पी.पी. फ़ाइल में डालने के लिए ठीक है, बस प्रत्येक दस्तावेज़ के <?php टैग के बाद require_once() का उपयोग करें।

यदि आधार पर प्रतिबंध लागू नहीं है, तो अपने वेब/ftp रूट के बाहर db.php फ़ाइल को स्थानांतरित करें जिस तरह से यह निश्चित रूप से http/ftp के माध्यम से सुलभ नहीं है। सुनिश्चित करें कि इस फ़ाइल पर अनुमतियां ठीक से सेट की गई हैं।

चूंकि आप अपने कोड के लिए ओओपी या एमवीसी संरचना का उपयोग नहीं कर रहे हैं, यह जाने का सबसे अच्छा मार्ग है।

2

मैं व्यक्तिगत रूप से एक फ़ाइल बुलाया db.php बना सकते हैं और उदाहरण

<?php 
    error_reporting(0); 
    $link = FALSE; 
    $link = mysql_connect('hostname', 'username', 'password'); 
    if (! $link) 
    { 
     die("Couldn't connect to mysql server!"); 
    } else { 
     mysql_select_db('databasename'); 
    } 
?> 

यह से कनेक्ट होने के रूप में रिपोर्टिंग त्रुटि बंद हो जाती है एक ही समय में के लिए अपने सर्वर

पर public_html फ़ोल्डर के ऊपर इस जगह अपनी डेटाबेस, आपके index.php से आपको फ़ाइल शामिल होगी:

<?php require('../db.php'); ?> 
संबंधित मुद्दे