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

PHP & Base de données Discussion :

Sécurité site web [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 132
    Par défaut Sécurité site web
    Bonjour, je ne sais pas si ce forum est le lieu indiqué mais je ne trouve un forum sur la sécurité.

    je suis vraiment à bout face à ce problème. Cela fait deux fois que mon site est piraté malgré les mesures de sécurité que j'ai pris pour éviter les injections.

    Les pirates arrivent à télécharger leur dossier dans mon espace d'hébergement qui se charge ensuite d'injecter de vider ma BDD et injetcter de fausses informations.

    Je ne sais pas s'ils parviennent via le site web où c'est le serveur qui a des failles?

    J'ai besoin de votre aide. Merci

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Par défaut
    tu prend les logs du serveur, tu cherches ce que les pirates ont mis dans les logs et tu devrais pouvoir trouver par quelle page ils sont passés.

    Les injections c'est qu'une catégorie de faille, y a aussi la faille include et les formulaires d'upload qui peuvent poser problème

    Les mots de passes doivent aussi être complexes ( y a eu une faille ces derniers temps qui touchait les blogs wordpress avec des mots de passe courants ).

  3. #3
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 132
    Par défaut
    Comment corriger ces failles due aux includes et au upload?

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Par défaut
    Faut déjà voir ce qu'il y a comme faille

  5. #5
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 132
    Par défaut
    J'ai découvert ces activité:

    1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    *************************
    *************************
    - [15/Aug/2013:06:54:56 +0200] "GET /article/detail_article.php?code_article=3&titre_article=R%C3%A9solutions%20finales%20de%20la%2023%C3%A8me%20%C3%A9dition%20du%20SIFIM%20Abengourou%202010& HTTP/1.0" 404 224 "-" "Mozilla/5.0 (compatible; MJ12bot/v1.4.3; http://www.majestic12.co.uk/bot.php?+)" "aeemci-ce.org" "mutu0061.phpnet.org"
    144.76.95.232 - 
    - [15/Aug/2013:06:55:04 +0200] "GET /article/detail_article.php?code_article=4&titre_article=D%C3%A9claration%20de%20l'association%20des%20El%C3%A8ves%20et%20Etudiants%20Musulmans%20de%20C%C3%B4te%20d'Ivoire%20(AEEMCI)%20r%C3%A9lative%20%C3%A0%20la%20fermeture%20des%20campus%20et%20r%C3%A9sidences%20universitaires& HTTP/1.0" 404 224 "-" "Mozilla/5.0 (compatible; MJ12bot/v1.4.3; http://www.majestic12.co.uk/bot.php?+)" "aeemci-ce.org" "mutu0093.phpnet.org"
    144.76.95.232 - 
    - [15/Aug/2013:06:55:13 +0200] "GET /article/detail_article?code_article=1&titre_article=Forum%20international%20des%20jeunes%20musulmans%20pour%20la%20coop%C3%A9ration%20culturelle%20%20%C3%A0%20Istanbul%20en%20Turquie.& HTTP/1.0" 404 220 "-" "Mozilla/5.0 (compatible; MJ12bot/v1.4.3; http://www.majestic12.co.uk/bot.php?+)" "aeemci-ce.org" "mutu0081.phpnet.org"
    144.76.95.232 - 
    - [15/Aug/2013:06:55:16 +0200] "GET /article/detail_article?code_article=3&titre_article=R%C3%A9solutions%20finales%20de%20la%2023%C3%A8me%20%C3%A9dition%20du%20SIFIM%20Abengourou%202010& HTTP/1.0" 404 220 "-" "Mozilla/5.0 (compatible; MJ12bot/v1.4.3; http://www.majestic12.co.uk/bot.php?+)" "aeemci-ce.org" "mutu0039.phpnet.org"
    144.76.95.232 - 
    - [15/Aug/2013:06:55:30 +0200] "GET /article/detail_article?code_article=7&titre_article=La%20mobilisation%20est%20au%20f%C3%A9minin& HTTP/1.0" 404 220 "-" "Mozilla/5.0 (compatible; MJ12bot/v1.4.3; http://www.majestic12.co.uk/bot.php?+)" "aeemci-ce.org" "mutu0028.phpnet.org"
    95.108.158.244 - 
    ***************************
    ***************************
    Ces liens n'ont rien avoir avec les liens de mes pages.

    2.
    Il y a aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    - [15/Aug/2013:00:14:05 +0200] "GET /chronique.php?PHPSESSID=dabef2edafa7827df7f4614cec183057 HTTP/1.1" 200 3519 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "aeemci-ce.org" "mutu0058.phpnet.org"
    95.108.158.244 -
    Je crois que les PHPSESSID sont due aux failles cookie et session. Je n'utilise pas de cookies sauf les session.

    3.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    *****************************************
    ******************************************
    - [15/Aug/2013:04:24:47 +0200] "GET /contact/contact.php HTTP/1.1" 200 3849 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2;  SLCC1;  .NET CLR 1.1.4325;  .NET CLR 2.0.50727;  .NET CLR 3.0.04506.648)" "www.aeemci-ce.org" "mutu0002.phpnet.org"
    65.55.213.54 - 
    - [15/Aug/2013:04:24:48 +0200] "GET /contact/css/ecran.css HTTP/1.1" 200 3765 "http://www.aeemci-ce.org/contact/contact.php" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2;  SLCC1;  .NET CLR 1.1.4325;  .NET CLR 2.0.50727;  .NET CLR 3.0.04506.648)" "www.aeemci-ce.org" "mutu0061.phpnet.org"
    65.55.213.54 - 
    - [15/Aug/2013:04:24:48 +0200] "GET /contact/css/screen.css HTTP/1.1" 200 3765 "http://www.aeemci-ce.org/contact/contact.php" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2;  SLCC1;  .NET CLR 1.1.4325;  .NET CLR 2.0.50727;  .NET CLR 3.0.04506.648)" "www.aeemci-ce.org" "mutu0028.phpnet.org"
    65.55.213.54 - 
    -  [15/Aug/2013:04:24:49 +0200] "GET /contact/css/reset.css HTTP/1.1" 200 3765 "http://www.aeemci-ce.org/contact/contact.php" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2;  SLCC1;  .NET CLR 1.1.4325;  .NET CLR 2.0.50727;  .NET CLR 3.0.04506.648)" "www.aeemci-ce.org" "mutu0032.phpnet.org"
    65.55.213.54 - 
    - [15/Aug/2013:04:24:49 +0200] "GET /contact/style.css HTTP/1.1" 200 3765 "http://www.aeemci-ce.org/contact/contact.php" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2;  SLCC1;  .NET CLR 1.1.4325;  .NET CLR 2.0.50727;  .NET CLR 3.0.04506.648)" "www.aeemci-ce.org" "mutu0033.phpnet.org"
    65.55.213.54 - 
    - [15/Aug/2013:04:24:49 +0200] "GET /contact/js/jquery.js HTTP/1.1" 200 3765 "http://www.aeemci-ce.org/contact/contact.php" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2;  SLCC1;  .NET CLR 1.1.4325;  .NET CLR 2.0.50727;  .NET CLR 3.0.04506.648)" "www.aeemci-ce.org" "mutu0048.phpnet.org"
    65.55.213.54 - 
    - [15/Aug/2013:04:24:50 +0200] "GET /contact/script.js HTTP/1.1" 200 3765 "http://www.aeemci-ce.org/contact/contact.php" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2;  SLCC1;  .NET CLR 1.1.4325;  .NET CLR 2.0.50727;  .NET CLR 3.0.04506.648)" "www.aeemci-ce.org" "mutu0106.phpnet.org"
    95.108.158.244 - 
    **********************************************
    **********************************************
    Le dossier contact n'est sur mon serveur.

    Voilà les activités suspects que j'ai découvert.

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Par défaut
    Les 404 c'est pas génant.

    Je viens de faire un tour sur ton site rien que pour corriger les injections sql y a du boulot

    Le formulaire d'inscription a l'air aussi pas mal troué

    Conseil : fais toi une fonction qui exécute tes requêtes SQL et qui t'envoie un mail en cas d'erreur

  7. #7
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 132
    Par défaut
    Concrètement que dois-je fais. Un exmple m'aiderait beaucoup

  8. #8
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Par défaut
    Essaye un truc dans ce genre là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function execute_requete_sql($requete) {
    $resultat = mysql_query($requete);
    if (!$resultat) {
    		$message = $requete."\n".print_r($_SERVER,true) 
    		."\n".print_r($_POST,true) 
    		."\n".print_r($_GET,true); // cookies + session + ce qui peut etre utile ...
    		mail( $admin_du_site, $sujet , $message); 
    		die();
    	}
        return $resultat;
      }
    Dans l'état ca n'est pas utilisable, mais l'idée est là, le but c'est d'être prévenu quand une erreur sql survient.

  9. #9
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 132
    Par défaut
    Merci, est-il de me protéger avec le fichier .htaccess avec ce script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
    RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
    RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
    RewriteRule ^(.*)$ index.php [F,L]

  10. #10
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Par défaut
    Non.

    Ce n'est pas en collant 3 lignes d'un htaccess sorti d'on ne sais ou que tu va résoudre tes problèmes.

    Regarde dans le log d'apache s'il n'y a pas de UNION et de CONCAT qui traînent. Ca devrait te montrer quelles pages ont été détournées et de là tu devrais comprendre ce qui ne va pas

    Cherche aussi dans tes fichiers php s'il n'y a pas de eval et de base64_decode

  11. #11
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Salut,

    Tu devrais laisser tomber mysql_query qui est déprécié et utiliser PDO avec requêtes préparées.

    Cela sera déjà beaucoup plus fiable !

    Voici un bon tuto :

    http://fmaz.developpez.com/tutoriels...omprendre-pdo/

    « Prévenir les injections requiert de séparer les données non sûres des commandes et requêtes. »
    c'est très précisément ce que font les requêtes préparées : séparer les données de la structure de la requête !
    bee

  12. #12
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 132
    Par défaut
    Je vais essayer toutes ces solutions et je vous reviens. Merci

  13. #13
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 132
    Par défaut
    Salut scvo.0ne, j'ai utilisé la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_real_escape_string
    pour sécurisé mes posts est à dite que cette fonction n'est pas fiable ou bien je l'utilise mal?

  14. #14
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Par défaut
    A mon avis tu ne t'en servais sur tes $_GET['id']
    Et comme l'a rappelé beegees les commandes mysql_ vont bientôt disparaître donc autant anticiper et passer à pdo et aux requêtes préparées

  15. #15
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 132
    Par défaut
    D'accord,
    EN plus de passer à PDO,
    j'ai modifier un peu ta fonction (pas vraiement )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php
    function executerequete($requete) {
     
    	//On securise la requete avec en enlevant toutes les balsies html (htmlentitises) et php (strip_tags
    	$resultat = htmlentities(strip_tags($requete));
    	$resultat = mysql_query($requete);
    	if (!$resultat) {
    			$sujet = 'Requete non executée';
    			$message = $requete."\n".print_r($_SERVER,true) 
    			."\n".print_r($_POST,true) 
    			."\n".print_r($_GET,true); // cookies + session + ce qui peut etre utile ...
    			mail('xxxxxxx@xxxxxx.xx', $sujet , $message); 
    			die();
    		}
    		return $resultat;
    	  }
    ?>
    En plus de ça , j'ai fouiné un peu sur le net
    j'ai trouvé cette solution
    Ajout de fichier .htaccess avec des interdiction d'execution de script, d'affichage de page .html, des fichiers cgi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    Options +FollowSymLinks   
    RewriteEngine On       
     
    # On bloque tous les liens contenant un <script>:
    RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
     
    # On bloque tous les scripts qui essayent de modifier un variable PHP GLOBALS:
    RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
     
    # On bloque tous les scripts qui essayent de modifier un variable _REQUEST:
    RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
     
    #Interdiction de l'affichage des pages index.htm saut index.php comme page par defaut
    DirectoryIndex index.php
     
    ### INTERDIRE LES AUTRES TYPES DE FICHIER INDEX
    <Files ~ "^(index)\.(p?s?x?htm?|txt|aspx?|cfml?|cgi|pl|php[3-9]|jsp|xml)$">
    order allow,deny
    deny from all
    </Files>
     
    ### EXÉCUTÉS PAR LE SERVEUR MAIS INTERDIT D'AFFICHAGE PAR LE NAVIGATEUR WEB
    <Files ~ "\.(inc|class|sql|ini|conf|exe|dll|bin|tpl|bkp|dat|c|h|py|spd|theme|module)$">
    deny from all
    </Files>

  16. #16
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Par défaut
    Arrête avec tes htaccess magiques. Ca ne sert à rien, surtout si tu ne comprend pas comment ça fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $resultat = htmlentities(strip_tags($requete));
    $resultat = mysql_query($requete);
    Ok. Faudra relire calmement les tutoriels qui explique ce qu'est une injection SQL et comment s'en protéger. Et ne plus utiliser mysql_query

  17. #17
    Membre expérimenté Avatar de Njörd
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 190
    Par défaut
    Bonjour moudjahidine,

    Pour ce qui est de la sécurité de ton site web il y a pas mal de choses à prendre en compte pour une protection de base (le risque zéro n'existe pas).

    Côté serveur :
    - Firewall + MaJ
    - Antivirus + MaJ
    - MaJ OS
    - Désactivation de ports
    - Connexions autorisées limitées
    - Configuration des droits sur les dossiers et fichiers
    - Cacher dans les headers la version du serveur, de l'OS etc
    - Personnaliser les messages d'erreur serveur
    - Configurer la sécurité du php.ini (sessions, cookies, taille max fichiers uploadé, ...)
    - ...

    Côté code applicatif :
    - Ne jamais faire confiance de ce qui vient du visiteur
    - Ne jamais faire confiance de ce qui vient du visiteur
    - Ne jamais faire confiance de ce qui vient du visiteur
    --> variables de formulaires, fichiers uploadés, accès aux dossiers, ...

    - Injection SQL => empêcher une variable de formulaire de contenir des requêtes SQL pouvant être traitées : échapper les appostrophes. Attention chaque SGBD a ses propres fonctions d'échappement d'où l'intérêt de PDO qui fait le tri pour toi. De plus, avec PDO, te pose pas la question : tu fais toujours des prepare() même si tu te sers qu'une fois de la requête.

    - Faille XSS : éviter qu'un script JS ne récupère des informations, par exemple le cookie de session d'un visiteur. Filtrer tous les paramètres POST et GET via les fonctions htmlspecialchars/htmlentities ou strip_tags. Personnellement je préfère strip_tags tant que je ne passe pas par un éditeur javascript. Si j'ai un éditeur, je me tourne vers des librairies externes genre html purify.

    - Faille CSRF : empêcher un pirate d'utiliser une page hébergée ailleurs de faire des requêtes sur ton serveur. But ? Vérifier que les données reçus de tes formulaires son bien issues d'un formulaire généré par ton serveur. Comment ? Un token généré aléatoirement avant d'afficher le formulaire et enregistré en session + mis dans un champ hidden de ton formulaire. Lors de l'envoi des données, tu check.

    - Fichiers uploadés : vérifier le type mime et pas juste l'extension, bien configurer les droits sur le dossiers temporaires et de destination.

    Il y en a d'autres, mais c'est déjà un bon début de faire tout cela.

    Enjoy

  18. #18
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 132
    Par défaut
    Merci à tous pour votre aide.

    Je reprend les solutions proposer:

    1- Je migre tous mes codes en PDO

    2-Sécuriser les données provenant du serveur (affichage)

    J' crée deux fonctions:
    Fonction 1: l'une pour vérifier les requêtes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    function ReqValidator($sql){
       $result = htmlentities(strip_tags($result));
       $result = $connect_db->prepare($sql);
       $result->execute();
     
     
    	 if(!$result){
    		$sujet = 'Requete non executée';
    		$message = $requete."\n".print_r($_SERVER,true) ."\n".print_r($_POST,true) 
    		."\n".print_r($_GET,true); // cookies + session + ce qui peut etre utile ...
    		mail($adresseMail, $sujet , $message); //On envoi un email à l'adresse du webmaster
     
                     //on récupère l'ip, la date et le message envoyé  
    		 $ip = $_SERVER['REMOTE_ADDR'];
    		 $dateCancel = date('d/m/Y');
    		 $txt = $ip.'-'.$dateCancel.'-'.$message;
     
    		//Ouverture de la page log
    		$fp = fopen("catchError.txt", 'w+'); //ouverture en écriture
    		fputs($fp, $txt);
    		fclose($fp);
    		unset($result);
    	}
    		return $result;
    	 }
    Fonction 2 : filtre tous les Id numérique envoyé en paramètre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function numericId($id){
        $result = $id;
        if(!is_numeric($result)){
         $result = 0;
        }
     
      return $result;
    }
    3-Formulaire d'envoi

    Je crée un champ input cacher avec pour valeur un token crée aléatoirement que je met en session

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      session_start();
    	   $_SESSION['token'] = str_shuffle(md5(microtime(true)));
    	   echo '<input type="hidden" name="token" value="$_SESSION["tokenid"]"';
    J'ajoute un un captcha

    4-Page de traitement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    if((!empty($_SESSION['token'])) && ($_SESSION['token'] == $_POST['token'])){ //On vérifie que le jeton a bien été envoyé
           unset($_SESSION['token']); // On détriut la session
     
    	//On vérifie que l'url envoyé vien de notre serveur
    	 if (!empty($_SERVER['HTTP_REFERER'])){
    		if (preg_match($_SERVER['HTTP_HOST'], $_SERVER['HTTP_REFERER'])){ //Je vérifie que l'ur envoyé vient de mon serveur
     
    		      //Traitement de mon formulaires
    		     //Requete preparee
     
    		     //Je vérifie le mime du fichier
    		    $array_mime = array('image/jpg', 'image/png');
    		    $type_fichier = $_FILES['fichier']['type'];
     
    		      if(in_array($type_fichier, $array_mime)){
    			//upload
    			}
     
    		}
    		 else{
    			//Je retourne à la page précedente
    		      }
    		 }
    ++ En plus je réécrit les url qui transforme les extensions en html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Options +FollowSymlinks
    RewriteEngine on
    RewriteRule ^page-([0-9]+)-([A-Za-z\-]+)\.html$  page.php?p=$1&alias=$2
    Une question: est-ce que vérifier simplement le mime du fichier upload garantie une bonne sécurité?

  19. #19
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 132
    Par défaut
    Merci, je suis passé à PDO, et j'ai utilisé les fonction pour sécuriser les données. Pour le moment ça semble mieux.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Failles de sécurité site web
    Par Jey_dc3 dans le forum Sécurité
    Réponses: 4
    Dernier message: 29/04/2012, 00h48
  2. Réponses: 3
    Dernier message: 03/08/2011, 15h06
  3. Sécurité site web php/phpmyadmin
    Par maloy dans le forum Langage
    Réponses: 7
    Dernier message: 29/07/2011, 23h18
  4. Sécurité site web - SSL
    Par Emilie012 dans le forum Sécurité
    Réponses: 1
    Dernier message: 24/02/2009, 08h15
  5. [Sécurité] site web php easyphp
    Par Go_Ahead dans le forum Langage
    Réponses: 1
    Dernier message: 16/01/2007, 09h47

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