2016-03-10 3 views
0

J'ai un serveur exécutant un os Debian, et j'ai une multitude de scripts .php situés dans le répertoire public apache par défaut. Ce n'est certainement pas le moyen le plus sûr de le faire, mais j'ai un script qui exécutera $ _REQUEST ["sql"] sur la base de données mysql. Vous pouvez seulement interroger ceci si vous avez le bon mot de passe, qui est comparé en texte brut dans le script.Y at-il un moyen qu'un attaquant puisse voir le code source dans les scripts php sur mon serveur?

Ma question est de savoir si un attaquant pourrait voir ce script et trouver le mot de passe, puis exécuter des instructions sql à volonté?

+1

Tout est possible ... – FirstOne

+1

L'affichage du script n'est pas le seul moyen pour un attaquant de découvrir le mot de passe. –

+0

@ Don'tPanic alors que dois-je faire attention? –

Répondre

1

Est-il possible? Bien sûr, si votre serveur est piraté, ce qui est une réelle possibilité. Cela étant dit, il est en fait normal d'inclure des informations d'identification dans des fichiers PHP (par exemple Wordpress), même si ce n'est pas le moyen le plus sûr possible. Cependant, ce dont vous parlez, c'est un risque de sécurité inutile. En termes d'authentification, vous devriez utiliser un hachage unidirectionnel sur le mot de passe afin que si les fichiers PHP sont compromis, un attaquant ne pourra toujours pas les utiliser. Découvrez the password_hash(..) function.

En outre, vous ne devez jamais exécuter d'instructions SQL directement envoyées par l'utilisateur. Si vous devez effectuer des tâches administratives, utilisez Adminer ou PhpMyAdmin. Les instructions SQL doivent être générées côté serveur using prepared statements pour échapper les informations d'entrée utilisateur.

+0

Tout ce qu'il faut c'est une erreur et vos fichiers PHP sont en jeu si vous les référencez directement dans vos chemins. Récupérer '/ index.php' si le module PHP ne se charge pas correctement affichera le code source. Ce n'est pas grave si vous utilisez un framework où tout est correctement routé et caché, mais c'est un désastre si vous utilisez des points de terminaison PHP individuels pour chaque page. – tadman