Mysql
 sql >> база данни >  >> RDS >> Mysql

PHP и MySQL - как да избегнем паролата в изходния код?

Най-лесният начин е, както казахте, да използвате конфигурационен файл.

Много рамки използват това (Zend , CakePHP , Кохана и т.н.) и това е най-често срещаният начин за правене на неща (дори в среда, която не е PHP, като ASP.NET с неговия web.config файлове). Това ви позволява също да копирате стойности на конфигурация от среда в среда, като просто копирате файловете за сайта, което е предимство пред разчитането на променливи на средата за настройка на сървъра (които много бързо могат да бъдат загубени и забравени).

Не трябва да се притеснявате за закриване на паролата, тъй като това не е файл, достъпен за целия свят, той със сигурност не трябва да бъде достъпен в мрежата. Това, което имам предвид с това, е, че или а) кажете на вашия уеб сървър да не обслужва вашия конфигурационен файл ( IIS вече прави това с 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';

Друг начин, който е доста често срещан, е да използвате XML конфигурационен файл и да четете само стойностите, които са ви необходими, както е подходящо (съхраняване на кеширано копие на конфигурационния файл в паметта). Това може много лесно да бъде ограничено само до зареждане в определени стойности, вместо да позволява произволно включване на PHP файлове и като цяло е по-добро решение според мен, но горното трябва да ви накара да започнете в правилната посока.

Вероятно ще искате вашия VCS за да игнорирате файла. От друга страна, може да искате скелет на файла или такъв с разумни стойности по подразбиране (последното не се отнася за данните за влизане, разбира се), за да се контролира версията. Често срещан начин за справяне с това е да имате регистриран конфигурационен файл на шаблона и инсталационната процедура копира този файл до местоположението на истинския конфигурационен файл, където е персонализиран. Това може да бъде ръчен или автоматизиран процес.

(Въпреки че донякъде не е свързано с основния въпрос, въвеждането на константа за вашата среда ви позволява да правите някои други страхотни неща като отлагане на реализация на фалшива поща вместо на живо SMTP един, но разбира се това може да стане и с конфигурационен файл)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да избягвате запетаи в CSV стойности при импортиране на таблица в MySQL?

  2. Как може този SQL да е грешен? Какво не виждам?

  3. Как да напиша регулярен израз поглед напред/зад в mysql

  4. Защо изместването на MYSQL по-високо LIMIT забавя заявката?

  5. Как да проверите дали дадени данни съществуват в множество таблици (всички от които имат една и съща колона)?