Question

Tout d'abord, je me rends compte qu'il n'y a pas une telle chose comme une solution parfaitement sûre (et même s'il y avait, sa facilité d'utilisation serait être la merde).

Cela dit, comment protégez-vous votre base de données MySQL d'être compromise par quelqu'un le téléchargement de votre code et la cueillette à travers elle? Sur la base de mon expérience avec PHP, il semble obligatoire de le stocker dans le code à un moment ou un autre, qui envoie des drapeaux pour moi. Je peux voir où refactoring à obscurcir variable, une constante, et les noms de fonction (définie par l'utilisateur) pourrait être bénéfique, mais à la fin ce serait encore possible de tracer à travers et trouver le fichier avec les informations de connexion de DB.

Idées?

Était-ce utile?

La solution

En général, l'information de MySQL sont stockées dans un fichier externe de configuration . L'utilisateur MySQL utilisé par l'application Web est donné des autorisations limitées telles que SELECT, INSERT, UPDATE, DELETE et non donné des autorisations telles que ALTER, DROP, DELETE. Si vous voulez libérer le code au public que vous ne comprend pas votre fichier de configuration privé, mais un fichier de configuration générique / instruction / minimale à la place.

Stockage l'information de MySQL dans un format crypté est un peu stupide, que vous auriez besoin de stocker la clé privée / unencryption aussi bien localement. S'il est trivial pour un utilisateur non authentifié pour afficher les fichiers de code ou de configuration sur votre serveur, le problème est pas le code - c'est la configuration de votre serveur et config.

Autres conseils

La sécurité peut être assisté en stockant des informations codées en dur (dans les fichiers de configuration ou des scripts) en dehors du Web racine, et en supprimant (le code de production) des messages d'erreur. De cette façon, nous l'espérons, vos utilisateurs ne voient pas que userValidate() expects exactly three paramaters.

pygorex1 est correcte, vous devez utiliser les fichiers de configuration externes où « externe » désigne un fichier en dehors de la racine web. Donc, même s'il y aurait une erreur de configuration de votre serveur Web qui permet à l'utilisateur de voir votre code source, ils ne seraient pas en mesure de voir les informations d'identification de base de données, car ils ne peuvent pas être directement accessibles via le navigateur.

pygorex1 est également droit sur les autorisations utilisateur. Limiter l'accès de l'utilisateur mysql au minimum est toujours préférable. Même si un pirate obtiendrait le mot de passe de mysql et nom d'utilisateur, il ne serait pas en mesure de faire des dégâts importants si les autorisations utilisateur ne sont limités à, par exemple SELECT-requêtes. Une chose qu'il a oublié de mentionner est que l'utilisateur MySQL ne doit être autorisé à se connecter depuis localhost (ou de tout hôte l'application Web est activée), ne jamais utiliser des caractères génériques dans les hôtes autorisés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top