IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sécurité Discussion :

Interdire l'accès à un fichier PHP


Sujet :

Sécurité

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 69
    Points : 39
    Points
    39
    Par défaut Interdire l'accès à un fichier PHP
    Bonjour à tous



    J'ai hébergé un site dernièrement et peu de temps après un hacker a pu savoir le login et le mot de passe FTP avec lesquelles il s'est connecté pour m'injecter plusieurs fichiers malicieux, ce que je peux dire la seule façon dont il peut le savoir c'est depuis mon fichier ou figure la connexion vers le serveur et la base de données, d'une façon ou d'une autre il a pu le visionner et le lire.



    Sur mon fichier .htaccess figure déjà la ligne Options -Indexes pour ne pas lister le contenu de mon répertoire, malgré ça il a pu l'atteindre ? Pourriez vous me dire comment une telle chose pourrait arriver ?


    Je sollicite votre aide pour bien vouloir me conseiller et me guider pour l'usage des bonnes pratiques pour contourner à ce genre d'attaques.



    Merci beaucoup

  2. #2
    Membre éprouvé Avatar de tdutrion
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2009
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 561
    Points : 1 105
    Points
    1 105
    Par défaut
    Bonjour,

    Je ne comprends pas, d'une part tu parles de fichiers et de ftp, et d'autre part de trouver les identifiants dans ton fichier de configuration, donc des identifiants SQL plutôt...

    Serait-il possible qu'il ait plutôt utilisé une faille (genre injection) plutôt qu'utilisé l'accès FTP ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 69
    Points : 39
    Points
    39
    Par défaut
    Tout d'abord merci pour votre réponse,

    Pour vous répondre, pardon, je referais aux identifiants SQL, mais je tiens à indiquer les identifiants FTP sont identiques à ceux d'SQL, donc c'est pour ça que j'étais inquiet peut être que quand il a pu lire le fichier contenant les identifiants SQL il les a utilisés après sur filezilla pour accéder à l'FTP ça d'une part.

    D'une autre part si c'est une injection SQL comme vous l'aviez indiqué et qui est fort probable, un mysql_real_escape_string ferait l'affaire pour contourner les injections ?

  4. #4
    Membre éprouvé Avatar de tdutrion
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2009
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 561
    Points : 1 105
    Points
    1 105
    Par défaut
    As-tu un endroit dans ton code où tu écris dans des fichiers ? Si non, as-tu à un endroit un include ou un require, prenant en paramètre une valeur générée depuis une entrée utilisateur ($_GET, $_POST, $_COOKIES...) ?

    Est-il possible d'avoir le code du site, ou l'adresse ou quoi que ce soit d'autre pour nous mettre sur la piste ?

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Protéger les variables d'une requête avec mysql_real_escape_string est nécessaire. Et plutôt que te demander dans quelles situations c'est indispensable ou pas tu peux l'utiliser systématiquement.

    Pour autant ce n'est peut-être pas à cause d'une injection sql que ton site a été piraté et Théocrite t'a indiqué d'autres possibilités.

    Question subsidiaire : quelque chose t'empêche-t-il de différencier le mot de passe ftp de celui de la base ? Au lieu de prendre cette situation comme un fait acquis, change le pass du ftp ou de la bdd !

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 69
    Points : 39
    Points
    39
    Par défaut
    Merci pour votre suivi


    @Théocrite

    Non j'ai pas de scripts qui écrit dans des fichiers, par contre j'ai plusieurs include dans des pages php ou j'appelle les données d'authentifications vers la base de données mais ils n'ont pas de paramètre "Variables" rien que des chaines.

    un exemple du code de la page que j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    
    mysql_connect("serveur","login","password") or die (mysql_error());
    mysql_select_db("base_de_donnees") or die (mysql_error());
    
    ?>

    @ABCIWEB

    Vous avez probablement raison, j'ai suivi votre conseil et j'ai changé le mot de passe FTP, par contre quand je le fais ça se change aussi pour MySQL et je dois à chaque fois changer le mot de passe utiliser dans l'authentification pour mysql, peut être essayer l'inverse depuis le phpmyadmin c'est faisable ?





    PS : Je vous ai envoyé tous les deux l'adresse par un message privé. Veuillez le consulter !


    Merci

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Salut,

    Quel CMS utilises-tu ? Peut-être n'as tu pas respecté correctement toute la procédure d'installation ?

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 69
    Points : 39
    Points
    39
    Par défaut
    Je n'utilise pas de CMS, c'est un site que j'ai monté de 0 !


    PS : J'ignore le terme utilisé pour ce genre de site Quelqu'un connait l’appellation à ce genre de site ?

  9. #9
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Un cms (Content Management Système) c'est terme générique pour dire un logiciel qui fourni des fonctionnalités de mise à jour du site. Au sens large cela inclus donc prestashop, magento, joomla, wordpress etc (même si les fonctionnalités initiales ne sont pas les mêmes).

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 69
    Points : 39
    Points
    39
    Par défaut
    Non non je ne parlais pas du terme cms mais plutôt le terme utilisé pour désigner les sites qui ne sont pas conçus avec un CMS, genre page par page, de 0 quoi

    PS : Merci quand même pour votre éclaircissement !

  11. #11
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Salut,

    On parle de développement sur mesure ou de développement from sratch.

    Mais ce que tu dis est incohérent. Si réellement tu l'avais fait from scratch tu pourrais changer le mot de passe ftp sans que cela te change automatiquement le mot de passe de la bdd (y'a rien d'automatique qui ne soit pas programmé quelque part).

    Par ailleurs un site ecommerce qui tient la route et développé from scratch demande un travail considérable pour une équipe d'experts. Si tu t'es lancé dans l'aventure avec le peu de connaissances que tu as (cf questions sur l'utilisation de "mysql_real_escape_string") faut pas t'étonner de te faire pirater par le premier venu...

    Utilises plutôt un CMS qui tient la route. Ou sinon faut revoir tout ton code (formulaires, requêtes, protection et contrôle des variables utilisateurs, include/require, téléchargement de fichiers vers ou depuis le serveur etc.) après avoir lu la doc sur la sécurité dont tu peux trouver une première approche en rentrant le terme "OWASP" (ou "OWASP france" si tu préfère le français à l'anglais) dans un moteur de recherche.

  12. #12
    Membre émérite
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 750
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 750
    Points : 2 973
    Points
    2 973
    Par défaut
    Bonsoir

    A te lire, je me pose une question : ne crois-tu pas que le hack s'est fait via un autre site, sur le même hébergeur ? Une fois hacké, sur les hébergements de moindre qualité, un code malsain pour "remonter" dans l'arborescence et une fois au niveau supérieur de "site_virusé", le virus pour aller se promener sur les autres sites et les viruser à leur tour.

    Comme les autres l'ont fait remarquer, programmer son propre système est une entreprise louable mais un peu folle dès lors qu'on ne maîtrise pas (un minimum) la sécurité web.

    Reste que tu ne vas pas jeter ton site à la poubelle et donc, songe à protéger ton site en modifiant les chmod en 644 pour les fichiers et 755 pour les dossiers voire même plus restrictif (444 ou 440 p.ex. pour les fichiers si ceux-ci n'ont pas vocation d'être mis à jour).

    Installe un logiciel pour blinder ton .htaccess.

    Si tu n'autorises pas les uploads sur ton site, dépose un fichier php.ini pour bloquer l'upload (à vérifier si ton hébergeur va aller traiter ce fichier php.ini).

    Il y a quantité de protections que l'on peut prendre et, depuis le code, s'assurer que 100% de tes lectures $_GET, $_POST et $_COOKIES pour ne citer que celles-là sont sécurisées et que tu blindes la lecture des paramètres. Un exemple : tu t'attends à une valeur booléenne ? Ne lit qu'un et un seul caractère et garanti qu'il s'agit soit de 0 soit de 1 et fais un die() p.ex. si c'est autre chose. Blinde, blinde, blinde ton code.

    J'en reviens à ton hébergement : s'il est de mauvaise qualité et n'isole pas les sites les uns des autres; tu pourrais avoir une maison ultra-sécurisée, le pirate n'aura aucun mal à passer via le balcon du voisin.

    Bonne soirée.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

Discussions similaires

  1. Interdire accès à un fichier php
    Par Mister Paul dans le forum Apache
    Réponses: 3
    Dernier message: 23/11/2014, 20h19
  2. Interdire l'accès aux fichiers dans certains cas
    Par ant0inep dans le forum Langage
    Réponses: 1
    Dernier message: 04/10/2010, 17h04
  3. Interdire l'accès au fichier si non connecté
    Par nico3141 dans le forum Sécurité
    Réponses: 0
    Dernier message: 19/02/2010, 14h56
  4. Réponses: 14
    Dernier message: 03/10/2007, 18h37
  5. interdire l'accés à un fichier en tapant son url
    Par Le fut dans le forum Apache
    Réponses: 1
    Dernier message: 13/03/2007, 14h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo