3
votes

Application Web PHP locale, comment protéger le mot de passe de la base de données

J'essaie de sécuriser une application Web PHP qui ne dispose pas d'une installation locale de style WAMP.

Actuellement, les mots de passe de la base de données de l'application se trouvent uniquement dans les fichiers .php. J'ai pensé à les chiffrer, mais n'importe qui peut simplement parcourir le code pour les déchiffrer assez facilement.

Cela ne fonctionne pas sur un serveur Web, mais sur le PC de l'utilisateur. Quelqu'un ici a-t-il tenté de sécuriser ce type d'application, et peut-être expédié un programme compilé pour renvoyer les mots de passe, ou peut-être utilisé un keystore externe d'une manière ou d'une autre?

Vos pensées sont appréciées.

Clarification: la base de données se trouve également sur le PC local.


11 commentaires

Votre base de données est-elle distante, en termes de client arbitraire utilisant votre application Web?


Il existe BEAUCOUP de fournisseurs d'authentification externes très robustes. Firebase et OAuth pour n'en nommer que quelques-uns.


@RussJ n'aurais-je pas encore besoin de stocker le jeton dans le programme? Peut-être que je peux simplement chiffrer le jeton avec quelque chose de rudimentaire.


Ce n’est pas une question idiote: de qui essayez-vous de protéger le mot de passe?


Oui. Je veux dire techniquement, aucun système n'est à 100% à l'épreuve du piratage, mais Firebase et OAuth offrent aux pirates potentiels une route difficile vers le succès ...


@Manngo question intéressante en fait, je n'y ai pas réfléchi. Étant donné que l'application est utilisée dans une organisation de compétition, je pense que le plus grand risque est qu'un utilisateur actuel découvre le mot de passe, puis se rend à un concours et se connecte à la base de données via WiFi. Je pourrais regarder d'autres mécanismes, mais le mot de passe figurant dans le fichier .php semblait être un drapeau rouge.


@RussJ Je serais enclin à accepter votre réponse dans mon cas, je pourrais stocker le jeton crypté dans un fichier externe plutôt que dans le .php, puis coder en dur le fournisseur pour rechercher ce fichier afin que PHP soit hors de lui. Ce ne serait pas infaillible à 1000%, mais à votre avis, cela rendrait l'effort important.


Quelqu'un m'a dit un jour que la cybersécurité, c'est comme être poursuivi par un ours noir affamé et en colère. Vous ne pouvez pas arrêter l'ours, mais vous pouvez installer des pièges à ours pour le ralentir. Plus vous posez de pièges, mieux c'est.


@RussJ j'adore! Je ne sais pas si vous voulez ajouter votre commentaire en tant que réponse, je l'accepterai, si nous continuons, les modérateurs peuvent fermer la question sur nous mais j'avais besoin de le poser et j'ai eu une tonne d'informations dont j'avais besoin!


terminé!...........


Vous pouvez enregistrer la clé sur n'importe quelle API Web et obtenir le jeton d'accès au lieu de la clé lorsqu'une application commence à utiliser l'API ... au lieu de stocker la clé sur l'application, je préfère stocker le jeton d'accès jusqu'à un certain temps ....


3 Réponses :


0
votes

Il n'y a aucun moyen de protéger les informations d'identification d'une connexion à une base de données si vous donnez au client / utilisateur le code source. Fondamentalement, si votre application peut y accéder et que le code source est là pour qu'ils puissent l'utiliser, le lire, l'analyser, ils ont le même accès que le logiciel.


0 commentaires

1
votes

Il existe BEAUCOUP de fournisseurs d'authentification externes très robustes. Firebase et OAuth pour n'en nommer que quelques-uns. Techniquement parlant, aucun système n'est à 100% à l'épreuve du piratage, mais Firebase et OAuth offrent aux pirates potentiels une route difficile vers le succès


1 commentaires

le problème viendra lorsque vous voudrez invalider le jeton lors de la déconnexion ou du changement de mot de passe ...



1
votes
  1. Vous pouvez utiliser la variable ENV dans ce cas créer un fichier .env et y stocker le mot de passe et l'appeler dans l'application.

  2. Vous pouvez créer une variable d'environnement dans le fichier de configuration Apache et appeler à partir de là dans votre application, c'est plus sécurisé.


0 commentaires