#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": ""
}
}
После клонирования вам просто нужно будет переименовать файл и добавить учетные данные.