8721 sujets

Développement web côté serveur, CMS

Salut salut,

Je viens vous voir aujourd'hui, car j'ai une question de sécurité à vous poser.

Mon site web est en ligne, opérationnel, etc. J'ai pas de soucis de ce côté là.
Parce contre, j'ai pas mal de connexion à ma BDD. Or, je n'aime pas dupliquerle code. C'est pourquoi j'envisage depuis pas mal de temps de créer un fichier avec mes informations de connexion et l'appeler via include_once() dans les pages en ayant besoin.

Or, là est ma question vis à vis de la sécurité. J'ai une zone de mon site accessible uniquement via htaccess/htpasswd . Je compte bien mettre le fichier dedans.
Mais il est tout à fait possible d'appeler depuis mon site des pages incluses dans ce dossier protégé via include(). Par exemple, une fonction un peu spéciale dont le code source est dans ce dossier est appelée plusieurs fois depuis la racine du site.
Est-il possible d'appeler ces pages là depuis "l’extérieur" du site web, via un lien hypertexte ? Si oui, ma solution envisagée n'est donc pas sécuritaire. Je n'ai pas les moyens de tester la chose.. n'ayant qu'un seul est unique FTP

Je n'arrive à trouver aucune réponse à ma question en lisant par-ci par-là ce que je peux sur internet.
Qu'en savez-vous ? Qu'en pensez-vous ? Est-ce que je me pose trop de questions ?


Merci d'avance,
Meca ! Smiley smile
Faudrait voir comment tu appelles les fichiers à inclure depuis le site. Mais bon sans code ou sans voir le site difficile de te dire ce qu'il en est.

Si tu as un truc du genre :


include 'mon-dossier-secure/' . $_GET['page'] . '.php';


Effectivement ça craint. Sur pas mal de configurations on peut même lire le code source des fichiers PHP avec ce genre de failles (je n'en dirais pas plus). Smiley cligne
Hmm,

Alors, ouai non... je suis pas suicidaire pour faire passer des infos par des paramètres $_GET.. ! Smiley cligne
Sinon, je fais plutôt comme ça, méthode assez classique:

include_once('dossier_secure/page_a_afficher.php');


Voilà un peu plus de précision !

Après, le code en lui même du site n'apporte rien AMHA, c'est du classique, connextion à la BDD, requêtes préparées, etc.
C'est juste le point de sécurité sur la ligne de code écrite plus haut.

Meca.
Modérateur
Je crois que tu confonds un peu les requêtes http et les includes en php, ou alors j'ai mal compris…

Enfin prenons une architecture simple:

/includes
  |– mysql_connect.inc
  |– machintruc.inc
/admin
  |– users.php
  |– content.php
index.php
page2.php

Les dossier includes contient des fichiers pouvant êtres inclus et partageant des ressources communes. Je les ai appelés ".inc" pour pouvoir interdire l'accès en http à tous les fichiers ".inc" sur le site, normal ils ne sont pas censés être appelés. Attention toutefois, si cela est mal configuré, cela risque de dévoiler les fichiers php en mode texte, on les rends donc en acces denied!

Le dossier /admin est une partie privée protégée en .htpasswd

Les fichiers index.php et page2.php sont ouverts à tous.


– Les fichiers index.php ou admin/users.php peuvent inclure le fichier includes/mysql_connect.inc
– l'utilisateur lambda n'a pas accès au fichiers contenus dans /admin, sauf s'il a le code
– personne n'a accès au fichiers .inc
– Tous les fichiers php ont accès à tous les autres fichiers, donc il faut prendre garde aux failles comme celle citées par jb_gfx. On pourrait limiter cela en gérant les droits sur les fichiers (chown/chmod), mais si php n'a pas au moins l'accès en lecture, le fichier ne sert plus à grand-chose Smiley langue