Как использовать пароль базы данных?

#php #passwords

#php #пароли

Вопрос:

Я очень новичок в php. В настоящее время я работаю над проектом, в котором данные с сервера базы данных должны быть извлечены, а затем возвращены клиенту. У меня есть этот небольшой фрагмент кода:

 <?php
  $host_name = 'host';
  $database = 'db';
  $user_name = 'user';
  $password = 'passwd';
  $link = new mysqli($host_name, $user_name, $password, $database);

  if ($link->connect_error) {
    die('<p>Connection failed</p>');
  } else {
    echo '<p>Connection success.</p>';
  }
?>
 

Самое неприятное заключается в том, что пароль написан в исходном коде. При использовании gitlab или чего-то подобного пароль всегда загружается — в каждой версии программного обеспечения. Это (конечно) огромный риск для безопасности. Как я могу сделать это более безопасным? Сохраните пароль в файле и прочитайте файл с помощью php, чтобы получить пароль базы данных — будет ли это хорошим решением?

Ответ №1:

Для этого вы могли бы использовать такой фреймворк, как Laravel, но это было бы серьезным изменением в вашей разработке. Что делает Laravel, так это создает .env файл. Этот файл содержит все учетные данные приложения (база данных, почта и т.д.). Вы могли бы сделать то же самое: создать файл, которого не будет в вашем git (добавьте его в свой .gitignore ) (например, JSON-файл). Когда вы клонируете репозиторий, вам просто нужно будет создать этот файл.

Например, файл JSON с именем credentials.json :

 {
    "database": {
         "login": "your-login",
         "password": "your-secret-password"
     }
}
 

Вы можете легко прочитать файл JSON с помощью PHP.

Очевидно, что вы должны управлять своим .htaccess , чтобы сделать этот файл нечитаемым извне.

Примечание: вы можете добавить в свой репозиторий git пустой файл, чтобы сохранить файловую структуру JSON, без учетных данных в credentials-example.json :

 {
    "database": {
         "login": "",
         "password": ""
     }
}
 

После клонирования вам просто нужно будет переименовать файл и добавить учетные данные.