J'ai un fichier contenant des mots de passe de base de données J'ai créé le fichier et fourni la structure pour elle sans mots de passe: p> db / connect.php code>. <?php
$db_host = "localhost";
$db_user = "";
$db_pw = "";
$db_name = "";
$con = new mysqli($db_host, $db_user, $db_pw, $db_name);
/* check connection */
if ($con->connect_errno) {
printf("Connect failed: %s\n", $con->connect_error);
exit();
}
4 Réponses :
La solution est facile: Ne stockez pas les informations d'identification sensibles dans Git. Déplacez vos données sensibles dans un fichier de configuration ou des variables d'environnement. Si un fichier, ne vérifiez jamais cela, sauf un fichier "démo" non valide. Si vous utilisez des variables ENV, ajoutez un README qui explique quelles variables sont nécessaires. P>
Utilisez une bibliothèque pour lire vos données de configuration au moment de l'exécution à l'utilisation que vous avez besoin des mots de passe. P>
Comme vous pouvez le constater, je ne stocke pas d'informations sensibles dans Git, c'est exactement ce que j'essaie de prévenir et de la question de ma question à propos de ...
Vous avez simplement dit à GIT d'arrêter de suivre un fichier précédemment suivi. Donc, vous pouvez toujours accéder aux révisions de ce fichier jusqu'au point où vous avez dit à Git de l'ignorer. P>
S'il y avait des révisions avec des données sensibles, vous pouvez réécrire l'historique de git avec ⚠️ La réécriture L'historique peut être un exercice dangereux si vous devez garder chaque commit un commettre un "fonctionnement" (par exemple, si vous deviez retourner à un commit précédent qui a été réécrit dans quelle garantie avez-vous que cela "fonctionne" ?). Réécrire également une histoire partagée posera potentiellement vos collaborateurs (ou vos propres) succursales à risque de conflits de fusion non triviale. P>
Cela dit que je ne pense pas que vous devriez mettre des informations d'identification dans les fichiers source. Utilisez un fichier de configuration (JSON, YAML, INI) que vous pouvez générer dans le cadre de votre configuration de projet ou de construire et de garder ce fichier à l'écart de Git (c'est-à-dire l'ignorer). P>
En outre, vous pouvez avoir des hameçons git susceptibles de rejeter les tentatives de validation de ces fichiers dans le référentiel GIT. P> git rebase code> ou filtre-filtre git code>. p>.
Ma question ne consiste pas à réécrire l'historique des GIT, il n'y a pas d'informations sensibles dans le référentiel. Ma question est de savoir comment je peux fournir la filtrastructure mais ne pas la suivre après ce point afin que tout entré dans le fichier ne soit pas suivi ...
Je comprends. Je pense avoir fourni des options cependant: déplacez les informations d'identification dans un fichier de configuration ignoré et autogénère ce fichier dans le cadre de votre configuration de votre projet.
Thx, je pense que je vais créer un fichier INI qui est ignoré par Git et non dans le référentiel et charger les données de ce fichier dans dB / connect.php
Vous pouvez donc toujours accéder aux révisions de ce fichier jusqu'à point de savoir où vous avez dit à Git de l'ignorer. Code> @CustomCommander Notez que ce n'est pas vrai - l'ajout d'un fichier / modèle à Gitignore ne le supprime pas. Vous pouvez déjà le savoir, mais les lecteurs ne peuvent pas et la suggestion selon laquelle Gitignore affecte les fichiers suivis est un point commun de confusion - exemple Stackoverflow.com/ A / 25436481/761202
@ Ad7six je vois ce que vous entiez, mais je ne pense pas que c'est ce que j'ai suggéré et même si le fichier est supprimé, vous peut i> d'accéder à des révisions de celui-ci (sauf si vous ne le sortez pas de toute l'histoire). Je ne suis pas sûr de ce qui est trompeur dans cette phrase. Je prends ton point cependant.
L'approche correcte ici est de stocker un fichier de modèle dans votre référentiel et de fournir des instructions ou un moyen automatisé de créer le fichier réel localement. Ce fichier em> serait celui qui serait ignoré par Par exemple, vous pouvez créer un fichier nommé si vous pouvez fournir des valeurs par défaut utiles dans ce fichier de modèle, tout le meilleur, mais le laissez autrement de telle manière que cela ne serait pas Travaillez du tout, et oblige le programmeur à réparer quelque chose. p> Ce fichier serait suivi comme normal, puis vous fourniriez des instructions ou un moyen automatisé pour effectuer une copie de ce fichier au fichier réel, < Code> Connect_Credentials.php code>. Ce fichier em> serait ignoré dans et jamais em> jamais em> suivi. Le programmeur, après clonage ou mise à jour, nécessiterait de créer ce fichier lui-même, du modèle et de modifier pour correspondre à l'environnement de développement local. P> Le fichier peut être un vrai fichier de code, Comme un fichier PHP, il peut s'agir d'un fichier de configuration que vous lisez, comme un fichier INI, un fichier JSON ou XML, YAML ou similaire, mais la même approche serait utile quel que soit le type de fichier ou le contenu. Suivez un modèle, ignorez le fichier réel. Cela permet également aux programmeurs de pouvoir voir le format de ce fichier et de connaître les modifications apportées, telles que les nouvelles options de configuration. P> << .gitignore code>, alors que le fichier de modèle serait suivi comme tout autre fichier. connect_credentials.php.template code> avec ce contenu (gardez à l'esprit que je sais rien em> à propos de PHP, de sorte que ci-dessous n'est pas censé être réel PHP du tout, il suffit de copier-coller et légère édition de votre question): p> .gitignore code>: p>
Une solution facile consiste à créer un fichier, par exemple. Une autre option plus dangereuse ne doit pas ajouter le fichier à la liste Ignore et pour les utilisateurs de repo simplement ignorer les changements de Leur index lorsqu'ils mettent à jour le fichier: p> Ceci est plus dangereux cependant, car les utilisateurs de repo sont plus susceptibles de vérifier accidentellement le fichier de toute façon. p> p> base de données.template.php code>, ajoutez le contenu à celui-ci, mais mettez-y des valeurs simples par défaut (par exemple, $ db_host = "localhost"; $ db_user = "root"; ... code>).
Ajouter base de données.php code> au fichier Ignore. Demandez aux utilisateurs de repo de copier le fichier de modèle sur base de données.php code> et de la configurer localement.
Votre question est-elle de savoir comment structurer votre code PHP de telle sorte qu'il puisse traiter du fichier manquant, comment structurer le code PHP dans ce fichier afin qu'il ne nécessite que les secrets soient intégrés à celui-ci, comment supprimer le fichier de manière permanente de la GIT L'histoire (parce que vous avez déjà commis des secrets ou similaires) - ou autre chose? Notez que votre question est actuellement uniquement marquée
git code>. Veuillez éditer votre question pour être claire et étiqueté de manière appropriée.Ma question est de savoir comment je peux fournir la structure de fichiers mais ne pas la suivre après ce point afin que tout entré dans le fichier ne soit pas suivi ...
Ok, donc c'est
Comment structurer le code PHP dans ce fichier afin qu'il ne nécessite pas de secrets à incorporer à l'intérieur code> - la question n'est toujours pas étiquetée PHP et il y a très peugit git code > dans cela. Voici un exemple / hint Github.com/cakephp/app/blob/master/ .gitignore # l3@ AD7SIX, c'est parce que la question n'est pas spécifiquement sur PHP, elle pourrait être une langue.
Il n'y a pas de réponse à chaque langue, votre question est i> spécifiquement sur PHP, à moins que "ne pas mettre de secrets dans des fichiers suivis" est tout ce que vous souhaitez emporter de votre question. De toute façon bonne chance :)