SlideShare una empresa de Scribd logo
1 de 26
Descargar para leer sin conexión
Sécurité MySQL

   Forum PHP 2007
  22 Novembre 2007
Agenda
Pourquoi la sécurité est
importante
La gestion des droits
Les directives de
configuration
La sécurité sur le Web
Les prochains défis de la
sécurité
Qui parle?
Damien Séguy
 Qui reçoit la lettre hebdo?

 Accompagnements
 des projets LAMP

 ‘Sécurité PHP 5 et MySQL’
 avec Philippe Gamache
 chez Eyrolles

 http://www.nexen.net/
Les risques
Usurpation du compte root
Effacement des données
Modification de données
Divulgations de données
Ridicule...
Les vulnérabilités avérées

1) Insuffisance des tests de sécurité
2)Configuration par défaut
3) Pas de chiffrement des données sensibles
4)Pas mises à jour du système
5) La sécurité apparaît lors des catastrophes
6)Surveillance inefficace
7)Contrôle insuffisant de l’accès par des tiers
Les droits par défaut
  Compte root, sans mot de passe
    Mettre un mot de passe

    Changer root en ‘chef ’?

  Les utilisateurs et bases de test
  Les utilisateurs sans mot de passe
  Les utilisateurs sans restriction
  d’IP
  Les utilisateurs anonymes
Configurations de
  la table user
 Utilisateur anonyme
   SELECT count(*) FROM users
   WHERE user=’’;

 Eviter les % dans les adresses
   SELECT count(*) FROM users
   WHERE host LIKE ‘%%%’;

 Toujours mettre un mot de passe
   SELECT count(*) FROM users
   WHERE password=’’;
Le droit de FILE

  Exportation de données
  vers un fichier
  Importation de données
  depuis un fichier
  Importations de données
  depuis le client
Le droit de
  GRANT

Possibilité de donner ses
propres droits
Escalade dans les droits
  Compléments par échange
  dans les droits
Configuration serveur



--skip-grant-tables
--old-password
--secure-auth
--skip-show-databases
Configuration serveur (2)


               --port=3306
               --skip-name-resolve
               --skip-networking
               --bind-address
               --skip-symbolic-links
Configuration serveur (3)


--local-infile=0
--secure-file-priv
--chroot
--open-files-limit
--safe-user-create
--allow-suspicous-udf
Configuration client


            --secure-auth
            --safe-updates
              aussi appelée :
              --i-am-a-dummy

            --select_limit=1000
            --max_join_size
Limiter les consommations

Dans la table User
  Max_connections        +-----------------------+------+
                         | Field                 | Null |
  Max_user_connections   +-----------------------+------+
                         | max_questions         | NO   |
                         | max_updates           | NO   |
  Max_questions          | max_connections       | NO   |
                         | max_user_connections | NO    |
  Max_updates            +-----------------------+------+


Désactivé par défaut
Valables sur une heure
Construction dynamique de la requête SQL
             Injections SQL
$requete = “SELECT COUNT(*) FROM users
WHERE login=’quot;.$_GET['login'].quot;‘
AND motdepasse=’quot;.$_GET['password'].quot;‘ “;
Mélange des données et de la commande
Il est possible d’échapper à l’encadrement, et
perturber la requête SQL
Formes d’injections

Suppression de clause WHERE
  WHERE login = '' or 1 or ''

Sous-requête
  WHERE id=(SELECT BENCHMARK(md5(1),1000));

UNION
  WHERE id=1 UNION SELECT * FROM table;

Insertions multiples
  VALUES ('login'),('admin');
Caractères spéciaux
    de MySQL
   ‘ et “ : délimiteur de chaîne
   () : sous-requêtes
   % et _ : regex avec LIKE
   REGEXP
   ; g G : délimiteur de fin de
   commande
   --, # et /* .... */
   commentaires
Protections

Protection des caractères
  Appelé échappement (barbarisme)
  en PHP : mysqli_real_escape_string() ET délimiteurs

$sql = quot;SELECT * FROM table WHERE
id = 'quot;
.mysqli_escape_string($mid, $_GET['id']).
quot;'quot;;
Forcer le type avant la mise en requête SQL : cas des entiers
Protections

Commandes préparées
  Préparation de la commande
  Affectation des variables
  Exécution de la commande
/* Préparation de la commande d'insertion */
$query = quot;INSERT INTO ma_ville (Nom, Pays, Region)
          VALUES (?,?,?)quot;;
$stmt = $mysqli->prepare($query);

$val1 = 'Bordeaux';
$val2 = 'FRA';
$val3 = 'Aquitaine';

$stmt->bind_param(quot;sssquot;, $val1, $val2, $val3);

/* Exécution de la commande */
$stmt->execute();

$val1 = 'Montréal';
$val2 = 'CAN';
$val3 = 'Québec';

/* Exécution de la commande */
$stmt->execute();

/* Fermeture de la commande */
$stmt->close();
Protections

   Procédures stockées
    $sql = quot;CALL ma_proc('quot;.$_GET['id'].quot;');

   Variables MySQL
     Plus facile à lire et à sécuriser
    $sql = quot;SET @id := 'quot;.$_GET['id'].quot;'quot;;
    mysqli_query($mid, $sql);
    $sql = quot;SELECT * FROM table WHERE id = @idquot;;
    mysqli_query($mid, $sql);

Les injections sont toujours possibles!!
Les portes
 dérobées
Les logs
(binaire, lent, général)
SHOW PROCESSLIST
SHOW CREATE TABLE
Le dossier de données
Les sauvegardes
(media, fichiers)
La réplication
Les clients (historique,
Autres outils

          Jetez ce qui ne sert pas
          Chiffrez les données
          Empoisonnez vos données
          Auditez tout ce qui se passe
          Sauvegardez
          Outils :
            MySQL Enterprise Security
            Advisor
Vers des standards
   de sécurité?
  Sarbanes-Oxley, SOX
  Health Insurance
  Portability and
  Accountability Act
  (HIPAA)
  Payment Card Industry
  Gramm-Leachy Bliley Act
  SB 1386
  BASEL II
Norme PCI (traduction libre)

1. Entretenir un fire-wall pour protéger les données
2. Ne pas utiliser les valeurs par défaut des paramètres de sécurité
3. Protéger les données stockées
4. Chiffrer les transmissions sur les réseaux ouverts
5. Utiliser régulièrement un anti-virus
6. Développer et entretenir des systèmes sécurisés
7. Implémenter des contrôles d'accès stricts
8. Assigner un identifiant unique à tout utilisateur du système
9. Restreindre l'accès physique aux données
10.Noter et surveiller tous les accès aux données
11.Tester régulièrement les systèmes de sécurité
12.Établir une politique de sécurité pour les sous-traitants et employés
http://www.nexen.net/
    conferences.php
damien.seguy@nexen.net

Más contenido relacionado

La actualidad más candente

Présentation gnireenigne
Présentation   gnireenignePrésentation   gnireenigne
Présentation gnireenigne
CocoaHeads.fr
 
T2 corrections-qc md
T2 corrections-qc mdT2 corrections-qc md
T2 corrections-qc md
infcom
 
Présentation de nagios
Présentation de nagiosPrésentation de nagios
Présentation de nagios
ilyassin
 

La actualidad más candente (20)

Comprendre la securite web
Comprendre la securite webComprendre la securite web
Comprendre la securite web
 
Mise en place d'un système de messagerie roundcube sous cent os 7
Mise en place d'un système de messagerie roundcube sous cent os 7Mise en place d'un système de messagerie roundcube sous cent os 7
Mise en place d'un système de messagerie roundcube sous cent os 7
 
Crud
CrudCrud
Crud
 
Hello mongo
Hello mongoHello mongo
Hello mongo
 
Mise en place d'un reseau securise par Cisco ASA
Mise en place d'un reseau securise par Cisco ASAMise en place d'un reseau securise par Cisco ASA
Mise en place d'un reseau securise par Cisco ASA
 
Les Z'ApéroTech Toulouse #2 - Présentation des nouveautés de JakartaEE 8
Les Z'ApéroTech Toulouse #2 - Présentation des nouveautés de JakartaEE 8Les Z'ApéroTech Toulouse #2 - Présentation des nouveautés de JakartaEE 8
Les Z'ApéroTech Toulouse #2 - Présentation des nouveautés de JakartaEE 8
 
Présentation gnireenigne
Présentation   gnireenignePrésentation   gnireenigne
Présentation gnireenigne
 
Premiers pas avec snort
Premiers pas avec snortPremiers pas avec snort
Premiers pas avec snort
 
PSES - La securite pour les développeurs
PSES - La securite pour les développeursPSES - La securite pour les développeurs
PSES - La securite pour les développeurs
 
Mise en place d’un système de détection
Mise en place d’un système de détectionMise en place d’un système de détection
Mise en place d’un système de détection
 
La securite pour les développeurs au RMLL 2015
La securite pour les développeurs au RMLL 2015La securite pour les développeurs au RMLL 2015
La securite pour les développeurs au RMLL 2015
 
Hacking Open source et Sécurité, préconisations
Hacking Open source et Sécurité, préconisationsHacking Open source et Sécurité, préconisations
Hacking Open source et Sécurité, préconisations
 
La sécurité et php
La sécurité et phpLa sécurité et php
La sécurité et php
 
T2 corrections-qc md
T2 corrections-qc mdT2 corrections-qc md
T2 corrections-qc md
 
Monitoring avec Zabbix
Monitoring avec ZabbixMonitoring avec Zabbix
Monitoring avec Zabbix
 
Présentation de nagios
Présentation de nagiosPrésentation de nagios
Présentation de nagios
 
memoire utilisation de Puppet et Nagios
memoire utilisation de Puppet et Nagiosmemoire utilisation de Puppet et Nagios
memoire utilisation de Puppet et Nagios
 
Meet-Up SQLI Lyon 09-2015 - Varnish
Meet-Up SQLI Lyon 09-2015 - VarnishMeet-Up SQLI Lyon 09-2015 - Varnish
Meet-Up SQLI Lyon 09-2015 - Varnish
 
Administration oracle7
Administration oracle7Administration oracle7
Administration oracle7
 
Sécuriser & chiffrer Mariadb - JDLL 2017
Sécuriser & chiffrer Mariadb - JDLL 2017Sécuriser & chiffrer Mariadb - JDLL 2017
Sécuriser & chiffrer Mariadb - JDLL 2017
 

Destacado

Présentation Jacques 1
Présentation Jacques 1Présentation Jacques 1
Présentation Jacques 1
frodri38
 
150317 bilan-micop-axe1-vf-150417074826-conversion-gate02
150317 bilan-micop-axe1-vf-150417074826-conversion-gate02150317 bilan-micop-axe1-vf-150417074826-conversion-gate02
150317 bilan-micop-axe1-vf-150417074826-conversion-gate02
lstephan
 
Marketing des héros dans l'Entertainment
Marketing des héros dans l'EntertainmentMarketing des héros dans l'Entertainment
Marketing des héros dans l'Entertainment
Quentin Bouthenet
 
Ejercicio3
Ejercicio3Ejercicio3
Ejercicio3
Merly QA
 

Destacado (20)

Présentation Jacques 1
Présentation Jacques 1Présentation Jacques 1
Présentation Jacques 1
 
Características de la Evaluación del Aprendizaje
Características de la Evaluación del AprendizajeCaracterísticas de la Evaluación del Aprendizaje
Características de la Evaluación del Aprendizaje
 
EncuestPregunta 11
EncuestPregunta 11EncuestPregunta 11
EncuestPregunta 11
 
Maestros saludables
Maestros saludablesMaestros saludables
Maestros saludables
 
Mediasociaux forma pme
Mediasociaux forma pmeMediasociaux forma pme
Mediasociaux forma pme
 
Venez Fêter le 14 juillet 2015 à Saint Rémy de Provence!
Venez Fêter le 14 juillet 2015 à Saint Rémy de Provence!Venez Fêter le 14 juillet 2015 à Saint Rémy de Provence!
Venez Fêter le 14 juillet 2015 à Saint Rémy de Provence!
 
150317 bilan-micop-axe1-vf-150417074826-conversion-gate02
150317 bilan-micop-axe1-vf-150417074826-conversion-gate02150317 bilan-micop-axe1-vf-150417074826-conversion-gate02
150317 bilan-micop-axe1-vf-150417074826-conversion-gate02
 
Distribución binomial
Distribución binomialDistribución binomial
Distribución binomial
 
Presentación Plastic Repair System
Presentación Plastic Repair SystemPresentación Plastic Repair System
Presentación Plastic Repair System
 
Pn2p5 les pieds noirs vus par les arabes1
Pn2p5 les pieds noirs vus par les arabes1Pn2p5 les pieds noirs vus par les arabes1
Pn2p5 les pieds noirs vus par les arabes1
 
SICAS
SICASSICAS
SICAS
 
Kimind Identité Numérique
Kimind   Identité NumériqueKimind   Identité Numérique
Kimind Identité Numérique
 
Josemogollon
JosemogollonJosemogollon
Josemogollon
 
Marketing des héros dans l'Entertainment
Marketing des héros dans l'EntertainmentMarketing des héros dans l'Entertainment
Marketing des héros dans l'Entertainment
 
Guia de orientacian_entrevista_mayoritaria
Guia de orientacian_entrevista_mayoritariaGuia de orientacian_entrevista_mayoritaria
Guia de orientacian_entrevista_mayoritaria
 
Ejercicio3
Ejercicio3Ejercicio3
Ejercicio3
 
Esiea
EsieaEsiea
Esiea
 
Biologia
BiologiaBiologia
Biologia
 
Trabajo de la tic
Trabajo de la ticTrabajo de la tic
Trabajo de la tic
 
El sistema de control como herramienta de gestión para la planificación y est...
El sistema de control como herramienta de gestión para la planificación y est...El sistema de control como herramienta de gestión para la planificación y est...
El sistema de control como herramienta de gestión para la planificación y est...
 

Similar a Sécurité MySQL

Ux012 formation-mysql-configuration-et-administration
Ux012 formation-mysql-configuration-et-administrationUx012 formation-mysql-configuration-et-administration
Ux012 formation-mysql-configuration-et-administration
CERTyou Formation
 
Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02
Asma Messaoudi
 
Guide pratique openssl sous debian
Guide pratique openssl sous debianGuide pratique openssl sous debian
Guide pratique openssl sous debian
yahyaf10
 
Cours admin-secure-4 avril-2011
Cours admin-secure-4 avril-2011Cours admin-secure-4 avril-2011
Cours admin-secure-4 avril-2011
infcom
 
My sql
My sqlMy sql
My sql
hajaar
 

Similar a Sécurité MySQL (20)

Re build Nantes 2013 SQL Server monitoring
Re build Nantes 2013   SQL Server monitoringRe build Nantes 2013   SQL Server monitoring
Re build Nantes 2013 SQL Server monitoring
 
Webinaire : sécurité informatique sur le web - Jérôme Thémée
Webinaire : sécurité informatique sur le web - Jérôme ThéméeWebinaire : sécurité informatique sur le web - Jérôme Thémée
Webinaire : sécurité informatique sur le web - Jérôme Thémée
 
Epitech securite-2012.key
Epitech securite-2012.keyEpitech securite-2012.key
Epitech securite-2012.key
 
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
 
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
 
La sécurite pour les developpeurs - OWF
La sécurite pour les developpeurs - OWFLa sécurite pour les developpeurs - OWF
La sécurite pour les developpeurs - OWF
 
La sécurité avec SQL Server 2012
La sécurité avec SQL Server 2012La sécurité avec SQL Server 2012
La sécurité avec SQL Server 2012
 
Ux012 formation-mysql-configuration-et-administration
Ux012 formation-mysql-configuration-et-administrationUx012 formation-mysql-configuration-et-administration
Ux012 formation-mysql-configuration-et-administration
 
On a volé les clefs de mon SI !
On a volé les clefs de mon SI !On a volé les clefs de mon SI !
On a volé les clefs de mon SI !
 
ShortUrlApp-iis-like
ShortUrlApp-iis-likeShortUrlApp-iis-like
ShortUrlApp-iis-like
 
Tuto atelier securisation_site_web
Tuto atelier securisation_site_webTuto atelier securisation_site_web
Tuto atelier securisation_site_web
 
System Center 2012 | SCCM : L'inventaire de A à Z avec System Center Configur...
System Center 2012 | SCCM : L'inventaire de A à Z avec System Center Configur...System Center 2012 | SCCM : L'inventaire de A à Z avec System Center Configur...
System Center 2012 | SCCM : L'inventaire de A à Z avec System Center Configur...
 
Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02
 
Guide pratique openssl sous debian
Guide pratique openssl sous debianGuide pratique openssl sous debian
Guide pratique openssl sous debian
 
Webinar bonnes pratiques securite
Webinar   bonnes pratiques securiteWebinar   bonnes pratiques securite
Webinar bonnes pratiques securite
 
Sécurité des données
Sécurité des donnéesSécurité des données
Sécurité des données
 
Cours admin-secure-4 avril-2011
Cours admin-secure-4 avril-2011Cours admin-secure-4 avril-2011
Cours admin-secure-4 avril-2011
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmedia
 
My sql
My sqlMy sql
My sql
 
My sql
My sqlMy sql
My sql
 

Más de Damien Seguy

Más de Damien Seguy (20)

Strong typing @ php leeds
Strong typing  @ php leedsStrong typing  @ php leeds
Strong typing @ php leeds
 
Strong typing : adoption, adaptation and organisation
Strong typing : adoption, adaptation and organisationStrong typing : adoption, adaptation and organisation
Strong typing : adoption, adaptation and organisation
 
Qui a laissé son mot de passe dans le code
Qui a laissé son mot de passe dans le codeQui a laissé son mot de passe dans le code
Qui a laissé son mot de passe dans le code
 
Analyse statique et applications
Analyse statique et applicationsAnalyse statique et applications
Analyse statique et applications
 
Top 10 pieges php afup limoges
Top 10 pieges php   afup limogesTop 10 pieges php   afup limoges
Top 10 pieges php afup limoges
 
Top 10 php classic traps DPC 2020
Top 10 php classic traps DPC 2020Top 10 php classic traps DPC 2020
Top 10 php classic traps DPC 2020
 
Meilleur du typage fort (AFUP Day, 2020)
Meilleur du typage fort (AFUP Day, 2020)Meilleur du typage fort (AFUP Day, 2020)
Meilleur du typage fort (AFUP Day, 2020)
 
Top 10 php classic traps confoo
Top 10 php classic traps confooTop 10 php classic traps confoo
Top 10 php classic traps confoo
 
Tout pour se préparer à PHP 7.4
Tout pour se préparer à PHP 7.4Tout pour se préparer à PHP 7.4
Tout pour se préparer à PHP 7.4
 
Top 10 php classic traps php serbia
Top 10 php classic traps php serbiaTop 10 php classic traps php serbia
Top 10 php classic traps php serbia
 
Top 10 php classic traps
Top 10 php classic trapsTop 10 php classic traps
Top 10 php classic traps
 
Top 10 chausse trappes
Top 10 chausse trappesTop 10 chausse trappes
Top 10 chausse trappes
 
Code review workshop
Code review workshopCode review workshop
Code review workshop
 
Understanding static analysis php amsterdam 2018
Understanding static analysis   php amsterdam 2018Understanding static analysis   php amsterdam 2018
Understanding static analysis php amsterdam 2018
 
Review unknown code with static analysis php ce 2018
Review unknown code with static analysis   php ce 2018Review unknown code with static analysis   php ce 2018
Review unknown code with static analysis php ce 2018
 
Everything new with PHP 7.3
Everything new with PHP 7.3Everything new with PHP 7.3
Everything new with PHP 7.3
 
Php 7.3 et ses RFC (AFUP Toulouse)
Php 7.3 et ses RFC  (AFUP Toulouse)Php 7.3 et ses RFC  (AFUP Toulouse)
Php 7.3 et ses RFC (AFUP Toulouse)
 
Tout sur PHP 7.3 et ses RFC
Tout sur PHP 7.3 et ses RFCTout sur PHP 7.3 et ses RFC
Tout sur PHP 7.3 et ses RFC
 
Review unknown code with static analysis php ipc 2018
Review unknown code with static analysis   php ipc 2018Review unknown code with static analysis   php ipc 2018
Review unknown code with static analysis php ipc 2018
 
Code review for busy people
Code review for busy peopleCode review for busy people
Code review for busy people
 

Sécurité MySQL

  • 1. Sécurité MySQL Forum PHP 2007 22 Novembre 2007
  • 2. Agenda Pourquoi la sécurité est importante La gestion des droits Les directives de configuration La sécurité sur le Web Les prochains défis de la sécurité
  • 3. Qui parle? Damien Séguy Qui reçoit la lettre hebdo? Accompagnements des projets LAMP ‘Sécurité PHP 5 et MySQL’ avec Philippe Gamache chez Eyrolles http://www.nexen.net/
  • 4. Les risques Usurpation du compte root Effacement des données Modification de données Divulgations de données Ridicule...
  • 5. Les vulnérabilités avérées 1) Insuffisance des tests de sécurité 2)Configuration par défaut 3) Pas de chiffrement des données sensibles 4)Pas mises à jour du système 5) La sécurité apparaît lors des catastrophes 6)Surveillance inefficace 7)Contrôle insuffisant de l’accès par des tiers
  • 6. Les droits par défaut Compte root, sans mot de passe Mettre un mot de passe Changer root en ‘chef ’? Les utilisateurs et bases de test Les utilisateurs sans mot de passe Les utilisateurs sans restriction d’IP Les utilisateurs anonymes
  • 7. Configurations de la table user Utilisateur anonyme SELECT count(*) FROM users WHERE user=’’; Eviter les % dans les adresses SELECT count(*) FROM users WHERE host LIKE ‘%%%’; Toujours mettre un mot de passe SELECT count(*) FROM users WHERE password=’’;
  • 8. Le droit de FILE Exportation de données vers un fichier Importation de données depuis un fichier Importations de données depuis le client
  • 9. Le droit de GRANT Possibilité de donner ses propres droits Escalade dans les droits Compléments par échange dans les droits
  • 11. Configuration serveur (2) --port=3306 --skip-name-resolve --skip-networking --bind-address --skip-symbolic-links
  • 13. Configuration client --secure-auth --safe-updates aussi appelée : --i-am-a-dummy --select_limit=1000 --max_join_size
  • 14. Limiter les consommations Dans la table User Max_connections +-----------------------+------+ | Field | Null | Max_user_connections +-----------------------+------+ | max_questions | NO | | max_updates | NO | Max_questions | max_connections | NO | | max_user_connections | NO | Max_updates +-----------------------+------+ Désactivé par défaut Valables sur une heure
  • 15. Construction dynamique de la requête SQL Injections SQL $requete = “SELECT COUNT(*) FROM users WHERE login=’quot;.$_GET['login'].quot;‘ AND motdepasse=’quot;.$_GET['password'].quot;‘ “; Mélange des données et de la commande Il est possible d’échapper à l’encadrement, et perturber la requête SQL
  • 16. Formes d’injections Suppression de clause WHERE WHERE login = '' or 1 or '' Sous-requête WHERE id=(SELECT BENCHMARK(md5(1),1000)); UNION WHERE id=1 UNION SELECT * FROM table; Insertions multiples VALUES ('login'),('admin');
  • 17. Caractères spéciaux de MySQL ‘ et “ : délimiteur de chaîne () : sous-requêtes % et _ : regex avec LIKE REGEXP ; g G : délimiteur de fin de commande --, # et /* .... */ commentaires
  • 18. Protections Protection des caractères Appelé échappement (barbarisme) en PHP : mysqli_real_escape_string() ET délimiteurs $sql = quot;SELECT * FROM table WHERE id = 'quot; .mysqli_escape_string($mid, $_GET['id']). quot;'quot;; Forcer le type avant la mise en requête SQL : cas des entiers
  • 19. Protections Commandes préparées Préparation de la commande Affectation des variables Exécution de la commande
  • 20. /* Préparation de la commande d'insertion */ $query = quot;INSERT INTO ma_ville (Nom, Pays, Region) VALUES (?,?,?)quot;; $stmt = $mysqli->prepare($query); $val1 = 'Bordeaux'; $val2 = 'FRA'; $val3 = 'Aquitaine'; $stmt->bind_param(quot;sssquot;, $val1, $val2, $val3); /* Exécution de la commande */ $stmt->execute(); $val1 = 'Montréal'; $val2 = 'CAN'; $val3 = 'Québec'; /* Exécution de la commande */ $stmt->execute(); /* Fermeture de la commande */ $stmt->close();
  • 21. Protections Procédures stockées $sql = quot;CALL ma_proc('quot;.$_GET['id'].quot;'); Variables MySQL Plus facile à lire et à sécuriser $sql = quot;SET @id := 'quot;.$_GET['id'].quot;'quot;; mysqli_query($mid, $sql); $sql = quot;SELECT * FROM table WHERE id = @idquot;; mysqli_query($mid, $sql); Les injections sont toujours possibles!!
  • 22. Les portes dérobées Les logs (binaire, lent, général) SHOW PROCESSLIST SHOW CREATE TABLE Le dossier de données Les sauvegardes (media, fichiers) La réplication Les clients (historique,
  • 23. Autres outils Jetez ce qui ne sert pas Chiffrez les données Empoisonnez vos données Auditez tout ce qui se passe Sauvegardez Outils : MySQL Enterprise Security Advisor
  • 24. Vers des standards de sécurité? Sarbanes-Oxley, SOX Health Insurance Portability and Accountability Act (HIPAA) Payment Card Industry Gramm-Leachy Bliley Act SB 1386 BASEL II
  • 25. Norme PCI (traduction libre) 1. Entretenir un fire-wall pour protéger les données 2. Ne pas utiliser les valeurs par défaut des paramètres de sécurité 3. Protéger les données stockées 4. Chiffrer les transmissions sur les réseaux ouverts 5. Utiliser régulièrement un anti-virus 6. Développer et entretenir des systèmes sécurisés 7. Implémenter des contrôles d'accès stricts 8. Assigner un identifiant unique à tout utilisateur du système 9. Restreindre l'accès physique aux données 10.Noter et surveiller tous les accès aux données 11.Tester régulièrement les systèmes de sécurité 12.Établir une politique de sécurité pour les sous-traitants et employés
  • 26. http://www.nexen.net/ conferences.php damien.seguy@nexen.net