SlideShare una empresa de Scribd logo
1 de 46
Descargar para leer sin conexión
@hellosct1
La sécurité pour les développeurs
Qui... est Christophe Villeneuve ?
afup – lemug.fr – mysql – mariadb – drupal – demoscene – firefoxos – drupagora – phptour – forumphp – solutionlinux – demoinparis – ici et maintenant – eyrolles – editions eni – programmez – linux pratique – webriver – phptv – neuros - elephpant
OWASP 2013
✔ Failles d'injection
✔ Violation d'authentification et de
Session
✔ Cross-Site Scripting (XSS)
✔ Référence directe non sécurisée à
un objet
✔ Mauvaise configuration de sécurité
✔ Données sensibles accessible
✔ Manque de sécurité au niveau des
rôles
✔ Falsification de requête (CSRF)
✔ Utilisation de composants connus
vulnérables
✔ Redirections non validées
A
M
P
SOLUTION
Rapport
OWASP
Sommaire
● A => Apache => Architecture / Serveur
● M => MySQL / MariaDB => Base de données
● P => PHP => Langage / webService / API
● Les hackers dans les API Métiers
Architecture / Serveur
A
● A1 - Injection en ligne de commande
● A5 - Mauvaise configuration sécurité
● A6 - Exposition de données sensibles
● NC - Exécution fichiers malicieux
✔ Configuration non à jour
✔ Pas de maintenance
✔ Mise à disposition des
fonctions
✔ Exec
✔ System
● Autre manière de prise en
main du système
● Serveur Zombie
Principe de l'attaque Conséquence
Injection de ligne de commandes
OWASP : A1 - Injection en ligne de commande
Désactiver dans php.ini (pour PHP)
– exec
– passthru
– shell_exec
– system
– proc_open
– popen
– curl_exec
– curl_multi_exec
– parse_ini_file
– show_source
Affiche le nom de l'utilisateur
<?php
echo exec('whoami');
?>
Par conséquent :
safe_mode = Off
allow_url_fopen=Off
allow_url_include=Off
OWASP : A1 - Injection en ligne de commande
Cacher le contenu des dossiers
● Ex : http://votreURL.com/nomDossier
● Solution : fichier index.php
<?php
header("Location: ../index.php");
die() ;
?>
OWASP : A5 - Mauvaise configuration sécurité
✔ Exécuter un fichier (ex :
PHPShell)
✔ Accès en écriture
✔ FTP, SSH, HTTP PUT,
WebDav...
✔ Absence de contrôle du
dépôt des fichiers
✔ Fonction include()
● Prise en main du système
● Accéder à des informations
non autorisées
Principe de l'attaque Conséquence
Exécution fichier malicieux
OWASP : NC - Exécution fichiers malicieux
Pour se protéger des fichiers malicieux
● <?php Include ($file) ; ?>
– Ex : http://votreURL.com/file=toto.php
● Solution
– http://votreURL.com/toto.php
● Ecraser le contenu de la variable
– http://urlPirate.com/hack.gif
● Solution dans php.ini
– allow_url_fopen = off
OWASP : A6 - Exposition de données sensibles
php_self non bloqué
© Source : D4.FR
OWASP : A6 - Exposition de données sensibles
Protection de base
● Php.ini
– safe_mode = off
● Verrouillez les dossiers
– .htaccess
– Chmod (444) ou 665 ou 775
● HTTPs / SSL
OWASP : A6 - Exposition de données sensibles
Base de données
M
● A1 - Injection SQL
● A4 - Référence direct non sécurisés à un objet
✔ Envoie du code SQL
✔ Formulaire
✔ GET / POST
✔ Cookies
✔ ...
✔ Contournement
authentification
✔ Récupération des données
de la base
✔ Récupération de fichiers
✔ Exécution de codes
Principe de l'attaque Conséquence
Injection SQL
OWASP : A1 - Injection SQL
Utilisation du SQL
● Risque : Requête avec des simples quotes
SELECT * FROM 'users' WHERE 'username'='$login' AND 'password'='$pass'
● Saisie : $login = hello $pass = hello
SELECT * FROM 'users' WHERE 'username'='hello' AND 'password'='hello'
● Saisie : $login = ' OR '1'='1' $pass = ' OR '1'='1'
SELECT * FROM 'users' WHERE 'username'='' OR '1'='1'' AND 'password'='' OR '1'='1''
● Saisie : $login = ' OR 1=1"); drop table users; $pass =
SELECT * FROM 'users' WHERE 'username'='' OR 1=1"); drop table users;' AND
'password'=''
TRUE
TRUE
TRUE
Sauf si BDD lecture
OWASP : A1 - Injection SQL
Se protéger contre injection SQL
● addslashes()
– Ajoute des antislashs dans une chaîne
SELECT * FROM 'users'
WHERE 'username'=' ' OR '1'='1' '
AND 'password'=' ' OR '1'='1' '
mysqli_real_escape_string()
– Protège les caractères spéciaux
● pdo_quote()
– Place des guillemets simples autour d'une chaîne entrée
les guillemets simples '
les guillemets doubles "
les slashes /
les caractères NULL
OWASP : A1 - Injection SQL
✔ Absence de contrôle dans
une requête
✔ Récupération d'une valeur
visible + modification
✔ Trouver d'autres données et
informations
✔
✔ Usurpation d'identifiant
✔ Effectué des opérations non
prévues initialement
Principe de l'attaque Conséquence
Modifier les arguments dynamiquement
OWASP : A4 - Référence direct non sécurisés à un objet
Comportement des objets
● Mauvaise utilisation
<?php
$sql = "SELECT * FROM users WHERE id = :id " ;
$qid = $cnx->prepare($sql);
$qid->execute (array (':id', $id) ) ;
$rows = $qid->fecthAll(PDO::FETCH_ASSOC) ;
?>
● Exemple
http://votreURL.com/compte?id=IdFalse
● Une solution
$qid->bindParam(':id', $id, PDO::PARAM_INT);
$qid->bindParam(':id', $id, PDO::PARAM_STR, 12);
$qid->execute () ;
OU
OWASP : A4 - Référence direct non sécurisés à un objet
Langage
P
● A1 – Injection API
● A2 -Violation de gestion d'authentification et de session
● A3 - Cross Site Scripting (XSS)
● A6 - Exposition de données sensibles
● A7 - Manque de contrôle d'accès au niveau fonctionnel
● A8 - Falsification de requête intersites (CSRF)
● A9 - Utilisation de composants vulnérable
● A10 - Redirections et renvois non validés
OWASP : A1 - Injection en ligne de commande
Provenance coté front
● Navigation
● Formulaire
– Champs : Input, upload,...
● Des API Couche Métier
OWASP : A1 – Injection API
✔ Suivi des utilisateurs par
SESSION ID
✔ Caractéristiques utilisateur
stockées coté serveur par
une variable de session
✔ Gestion des états : Cookies /
Get / Post
✔ Chiffrement faible
✔ Vol des données
SESSION_ID si elles ne
sont pas cryptées
✔ Utilisation ailleurs
Principe de l'attaque Conséquence
Gestion des données entrées
OWASP : A2 -Violation de gestion d'authentification et de session
Solution de contrôle (1/3)
● Prévoir la présence d'une clef de hashage caché
– Générer une clef cryptée de hachage
● IP
● Navigateur utilisé
● Une durée de validité
● ...
– Différencier les formulaires
– Eviter la protection en MD5 pour HASH
OWASP : A2 -Violation de gestion d'authentification et de session
Solution de contrôle (2/3)
● Remède contre Session ID
– Cryptage par HASH
– Eviter le MD5 avec la date de connexion
– Contenu aléatoire
● Oublier les champs Hidden avec des caractéristiques
utilisateur
OWASP : A2 -Violation de gestion d'authentification et de session
Solution de contrôle (3/3)
● Lors de l'envoie d'un formulaire, quelques bases
– If isset($_POST['string']) { /* … */ }
– If sizeof ($_POST['string'])>0 { /* ... */ }
● Attention aux superglobales
$GLOBALS, $_SERVER, $_GET, $_POST, $_FILES,
$_SESSION, $_REQUEST, $_ENV
– $str=htmlentities ($_COOKIE['string'],ENT_QUOTES) ;
OWASP : A2 -Violation de gestion d'authentification et de session
✔ XSS
✔ Risque applicatif
✔ Langage de requête
✔ Ldap / Xpath
✔ Langage interprété du type
✔ eval, system, consorts
✔ Vol de sessions (cookies)
✔ Redirection de pages
✔ Scanner des pages
✔ Usurpation d'identitée /
Phishing
✔ Contrôle du navigateur
Principe de l'attaque Conséquence
Naviguer dans les pages webs
OWASP : A3 - Cross Site Scripting (XSS)
La navigation en mode tranquille
● Absence de protection
<?php
echo "Un petit risque de
<script>alert ('hack')</script>";
?>
● Avec une protection
<?php
echo htmlentities("Un petit risque de
<script>alert ('hack')</script>");
?>
OWASP : A3 - Cross Site Scripting (XSS)
Contre mesures
● Données entrantes :
– Valider chaque valeur (longueur, type...)
filter_var() ou filter_input()
– strip_tags // supprime caractère NULL
– Htmlentities // balise html
● Données en sortie :
– Htmlspecialchars() ;
OWASP : A3 - Cross Site Scripting (XSS)
Se protéger de PHP_SELF
Exemple :
<form action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="text" name="exemple" value="reussi" />
<input type="submit" value="Submit" />
</form>
● Dans un formulaire ou construction d'une URL
<?php echo htmlentities($_SERVER['PHP_SELF']); ?>
OWASP : A6 - Exposition de données sensibles
✔ Accéder à des pages non
autorisés
✔ Modifier les droits
✔ Prise de contrôle du site
✔ Générer des actions non
autorisés
Principe de l'attaque Conséquence
Contrôle d'accès au niveau fonctionnel
OWASP : A7 - Manque de contrôle d'accès au niveau fonctionnel
Solution contrôle d'accès
● Exemple
– http://urlSite.com/getpage
– http://urlSite.com/admin_getpage
● Solutions
– Vérifier le contrôle d'accès (principe identification)
– Vérifier les URLs
OWASP : A7 - Manque de contrôle d'accès au niveau fonctionnel
✔ Trouver
✔ des données stockés /
archivés en clair
✔ Espace privée non
partagée
✔ Communication avec la
banque
✔ Déterminer les algorithmes
de cryptage faible
✔ Cible principale
✔ Mot de passes
✔ Données sensibles non
chiffrées
✔ Carte bleu
Principe de l'attaque Conséquence
Exposition de données sensibles
OWASP : A1 / A6 / A10
Filtrer les données sensibles
● Utilisation du port https
if($_SERVER['SERVER_PORT'] != 443)
{
header('Location: https://urlDuSite.com/prive.php');
exit;
}
● Vérifier le certificat <?php
if (!isset($_SERVER['SSL_CLIENT_M_SERIAL'])
|| !isset($_SERVER['SSL_CLIENT_V_END'])
|| !isset($_SERVER['SSL_CLIENT_VERIFY'])
|| $_SERVER['SSL_CLIENT_VERIFY'] !== 'SUCCESS'
|| !isset($_SERVER['SSL_CLIENT_I_DN'])
) { //FALSE;
}
if ($_SERVER['SSL_CLIENT_V_REMAIN'] <= 0) {
// FALSE;
}
// TRUE;
?>
OWASP : A6 / A9 / A10
✔ Falsification de requêtes
(CSRF)
✔ Modification du contenu
d'une page
✔ But éviter de passer par le
formulaire
✔ Conduire l'utilisateur vers
un site malveillant
✔ Lui forcer la main
✔ Ex : download
Principe de l'attaque Conséquence
Modifier le comportement
OWASP : A8 - Falsification de requête intersites (CSRF)
Imposer un comportement
● Créer un token ou un jeton de sécurité (toutes les pages)
<?php
session_start();
$token = uniqid(rand(), true); // jeton unique
$_SESSION['token'] = $token; // stockage
// heure de création du jeton
$_SESSION['token_time'] = time();
?>
<html><body>
<form id="form" name="form" method="post"
action="traitement.php">
...
<input type="hidden" name="token"
id="token" value="<?php echo $token;?>"/>
...
</form>
</body></html>
<?php
session_start();
if(isset($_SESSION['token'])
&& isset($_SESSION['token_time'])
&& isset($_POST['token']))
{
//Si jeton session = au formulaire
if($_SESSION['token'] ==
$_POST['token'])
{
// exécution du code
}
}
// sinon erreur
?>
Passage 1 Passage 2
OWASP : A8 - Falsification de requête intersites (CSRF)
Impact dans les API Métier
Les hackers sont astucieux
✔ Envoie du code SQL
● Formulaire
● GET / POST
● Cookies
● ...
✔ Contournement
authentification
✔ Récupération des données
de la base
✔ Récupération de fichiers
✔ Exécution de codes
Principe de l'attaque Conséquence
API Métier : connexion LDAP
OWASP : A1 – Injection API
Comportement injection LDAP
● Formulaire exemple
<input type="text" size=20 name="username">
● Connexion Ldap
String ldapSearchQuery = "(cn=" + $username + ")";
System.out.println(ldapSearchQuery);
● Solution
– Valider les données avant de générer une requête de
recherche
OWASP : A1 – Injection API
Webservices
function encrypt_decrypt($action, $string) {
$output = false;
$encrypt_method = "AES-256-CBC";
$secret_key = 'votre clef secrete';
$secret_iv = 'vecteur aleatoire secret';
$key = hash('sha256', $secret_key); // hash
// prepare une methode de cryptage sur 16 caractères
$iv = substr(hash('sha256', $secret_iv), 0, 16);
if( $action == 'encrypt' ) {
$output = openssl_encrypt($string, $encrypt_method, $key, 0, $iv);
$output = base64_encode($output);
}
else if( $action == 'decrypt' ){
$output = openssl_decrypt(base64_decode($string), $encrypt_method, $key, 0, $iv);
}
return $output;
}
Code Mini
PHP 5.4.x
OWASP : A1 – Injection API
✔ Librairy
✔ ORM
✔ API
● Framework
● CMS
● CRM/ERP
● …
✔ Voir le début de la
présentation
Principe de l'attaque Conséquence
HS : Applications
OWASP : Hors Sujet (voir Owasp Projet)
Les impacts pour un développement
Classement OWASP 2013 Serveur LangageBDD
X X
X
X
X
X X
X
A1-Failles d'injection
A2-Violation d'authentification et de Session
A3-Cross-Site Scripting (XSS)
A4-Référence directe non sécurisée à un objet
A5-Mauvaise configuration de sécurité
A6-Données sensibles accessible
A7-Manque de sécurité au niveau des rôles
A8-Falsification de requête (CSRF)
A9-Utilisation de composants connus vulnérables
A10-Redirections non validées
X
X
X
NC- Exécution fichiers malicieux X
X
X
Retenir... 1 phrase
protégez-vous
www.OWASP.org

Más contenido relacionado

La actualidad más candente

OWASP Québec - octobre 2016 - présentation sur les mots de passe
OWASP Québec - octobre 2016 - présentation sur les mots de passeOWASP Québec - octobre 2016 - présentation sur les mots de passe
OWASP Québec - octobre 2016 - présentation sur les mots de passePatrick Leclerc
 
Php 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVCPhp 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVCPierre Faure
 
Sécurité et Quaité de code PHP
Sécurité et Quaité de code PHPSécurité et Quaité de code PHP
Sécurité et Quaité de code PHPJean-Marie Renouard
 
Sécurisez-vous avec des solutions Open Source
Sécurisez-vous avec des solutions Open SourceSécurisez-vous avec des solutions Open Source
Sécurisez-vous avec des solutions Open SourceCertilience
 
Cours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partieCours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partiekadzaki
 
Hacking, Open Source et sécurité Par Certilience, solutions linux, Mai 2013
Hacking, Open Source et sécurité Par Certilience, solutions linux, Mai 2013Hacking, Open Source et sécurité Par Certilience, solutions linux, Mai 2013
Hacking, Open Source et sécurité Par Certilience, solutions linux, Mai 2013Certilience
 
Php mysql cours
Php mysql coursPhp mysql cours
Php mysql courszan
 
Cours php & Mysql - 2éme partie
Cours php & Mysql - 2éme partieCours php & Mysql - 2éme partie
Cours php & Mysql - 2éme partiekadzaki
 
ASFWS 2013 - Optimiser ses attaques Web avec Burp par Nicolas Grégoire
ASFWS 2013 - Optimiser ses attaques Web avec Burp par Nicolas GrégoireASFWS 2013 - Optimiser ses attaques Web avec Burp par Nicolas Grégoire
ASFWS 2013 - Optimiser ses attaques Web avec Burp par Nicolas GrégoireCyber Security Alliance
 

La actualidad más candente (13)

Comprendre la securite web 2017
Comprendre la securite web 2017Comprendre la securite web 2017
Comprendre la securite web 2017
 
OWASP Québec - octobre 2016 - présentation sur les mots de passe
OWASP Québec - octobre 2016 - présentation sur les mots de passeOWASP Québec - octobre 2016 - présentation sur les mots de passe
OWASP Québec - octobre 2016 - présentation sur les mots de passe
 
Php 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVCPhp 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVC
 
Sécurité et Quaité de code PHP
Sécurité et Quaité de code PHPSécurité et Quaité de code PHP
Sécurité et Quaité de code PHP
 
Sécurité MySQL
Sécurité MySQLSécurité MySQL
Sécurité MySQL
 
Sécurisez-vous avec des solutions Open Source
Sécurisez-vous avec des solutions Open SourceSécurisez-vous avec des solutions Open Source
Sécurisez-vous avec des solutions Open Source
 
Cours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partieCours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partie
 
Les tests de securite devops
Les tests de securite devopsLes tests de securite devops
Les tests de securite devops
 
Hacking, Open Source et sécurité Par Certilience, solutions linux, Mai 2013
Hacking, Open Source et sécurité Par Certilience, solutions linux, Mai 2013Hacking, Open Source et sécurité Par Certilience, solutions linux, Mai 2013
Hacking, Open Source et sécurité Par Certilience, solutions linux, Mai 2013
 
Configuration PHP5
Configuration PHP5Configuration PHP5
Configuration PHP5
 
Php mysql cours
Php mysql coursPhp mysql cours
Php mysql cours
 
Cours php & Mysql - 2éme partie
Cours php & Mysql - 2éme partieCours php & Mysql - 2éme partie
Cours php & Mysql - 2éme partie
 
ASFWS 2013 - Optimiser ses attaques Web avec Burp par Nicolas Grégoire
ASFWS 2013 - Optimiser ses attaques Web avec Burp par Nicolas GrégoireASFWS 2013 - Optimiser ses attaques Web avec Burp par Nicolas Grégoire
ASFWS 2013 - Optimiser ses attaques Web avec Burp par Nicolas Grégoire
 

Destacado

Le modèle de sécurité des Windows Apps
Le modèle de sécurité des Windows AppsLe modèle de sécurité des Windows Apps
Le modèle de sécurité des Windows AppsMicrosoft
 
2010 - Les technologies d'authentification forte dans les applications web: c...
2010 - Les technologies d'authentification forte dans les applications web: c...2010 - Les technologies d'authentification forte dans les applications web: c...
2010 - Les technologies d'authentification forte dans les applications web: c...Cyber Security Alliance
 
Web API Security
Web API SecurityWeb API Security
Web API SecurityStefaan
 
Swagger pour documenter votre REST API - présentation en français
Swagger pour documenter votre REST API - présentation en françaisSwagger pour documenter votre REST API - présentation en français
Swagger pour documenter votre REST API - présentation en françaisMartin Yung
 
Securing your API and mobile application - API Connection FR
Securing your API and mobile application - API Connection FRSecuring your API and mobile application - API Connection FR
Securing your API and mobile application - API Connection FRSebastien Gioria
 
Bonnes pratiques API - Paris Web 2013
Bonnes pratiques API - Paris Web 2013Bonnes pratiques API - Paris Web 2013
Bonnes pratiques API - Paris Web 2013Eric D.
 
Activite 2 religions c.e
Activite 2 religions   c.eActivite 2 religions   c.e
Activite 2 religions c.emarianafilip59
 
Estudio técnico
Estudio técnicoEstudio técnico
Estudio técnicoRoss Chan
 
Practica2_REA
Practica2_REAPractica2_REA
Practica2_REAionbuc
 
PrestaShop Keynote "WeCommerce is better e-commerce" By Bruno Lévêque
PrestaShop Keynote "WeCommerce is better e-commerce" By Bruno LévêquePrestaShop Keynote "WeCommerce is better e-commerce" By Bruno Lévêque
PrestaShop Keynote "WeCommerce is better e-commerce" By Bruno LévêquePrestaShop
 
07 photos-surprenantes-et-emouvantes-avec-les-animaux
07 photos-surprenantes-et-emouvantes-avec-les-animaux07 photos-surprenantes-et-emouvantes-avec-les-animaux
07 photos-surprenantes-et-emouvantes-avec-les-animauxGerard Houdinet
 
El entorno de las políticas públicas
El entorno de las políticas públicasEl entorno de las políticas públicas
El entorno de las políticas públicasGobernabilidad
 
Une plateforme ouverte, Firefox OS - Mozilla
Une plateforme ouverte, Firefox OS - MozillaUne plateforme ouverte, Firefox OS - Mozilla
Une plateforme ouverte, Firefox OS - MozillaChristophe Villeneuve
 
Méthodologie - adoption d'une norme en 7 étapes
Méthodologie - adoption d'une norme en 7 étapesMéthodologie - adoption d'une norme en 7 étapes
Méthodologie - adoption d'une norme en 7 étapesMarc-Andre Heroux
 
Mandefa export pour PME
Mandefa export pour PMEMandefa export pour PME
Mandefa export pour PMEMary Walckiers
 
Seminaire journee 2013 2014
Seminaire journee 2013 2014Seminaire journee 2013 2014
Seminaire journee 2013 2014WE DO MUSIC
 

Destacado (20)

Le modèle de sécurité des Windows Apps
Le modèle de sécurité des Windows AppsLe modèle de sécurité des Windows Apps
Le modèle de sécurité des Windows Apps
 
2010 - Les technologies d'authentification forte dans les applications web: c...
2010 - Les technologies d'authentification forte dans les applications web: c...2010 - Les technologies d'authentification forte dans les applications web: c...
2010 - Les technologies d'authentification forte dans les applications web: c...
 
Web API Security
Web API SecurityWeb API Security
Web API Security
 
Swagger pour documenter votre REST API - présentation en français
Swagger pour documenter votre REST API - présentation en françaisSwagger pour documenter votre REST API - présentation en français
Swagger pour documenter votre REST API - présentation en français
 
Securing your API and mobile application - API Connection FR
Securing your API and mobile application - API Connection FRSecuring your API and mobile application - API Connection FR
Securing your API and mobile application - API Connection FR
 
Bonnes pratiques API - Paris Web 2013
Bonnes pratiques API - Paris Web 2013Bonnes pratiques API - Paris Web 2013
Bonnes pratiques API - Paris Web 2013
 
Guia metodológica Internet Segura 2013
Guia metodológica Internet Segura 2013Guia metodológica Internet Segura 2013
Guia metodológica Internet Segura 2013
 
237762
237762237762
237762
 
Modelo de examen adaptado. asun
Modelo de examen adaptado. asunModelo de examen adaptado. asun
Modelo de examen adaptado. asun
 
Activite 2 religions c.e
Activite 2 religions   c.eActivite 2 religions   c.e
Activite 2 religions c.e
 
Estudio técnico
Estudio técnicoEstudio técnico
Estudio técnico
 
Practica2_REA
Practica2_REAPractica2_REA
Practica2_REA
 
PrestaShop Keynote "WeCommerce is better e-commerce" By Bruno Lévêque
PrestaShop Keynote "WeCommerce is better e-commerce" By Bruno LévêquePrestaShop Keynote "WeCommerce is better e-commerce" By Bruno Lévêque
PrestaShop Keynote "WeCommerce is better e-commerce" By Bruno Lévêque
 
07 photos-surprenantes-et-emouvantes-avec-les-animaux
07 photos-surprenantes-et-emouvantes-avec-les-animaux07 photos-surprenantes-et-emouvantes-avec-les-animaux
07 photos-surprenantes-et-emouvantes-avec-les-animaux
 
El entorno de las políticas públicas
El entorno de las políticas públicasEl entorno de las políticas públicas
El entorno de las políticas públicas
 
Une plateforme ouverte, Firefox OS - Mozilla
Une plateforme ouverte, Firefox OS - MozillaUne plateforme ouverte, Firefox OS - Mozilla
Une plateforme ouverte, Firefox OS - Mozilla
 
Méthodologie - adoption d'une norme en 7 étapes
Méthodologie - adoption d'une norme en 7 étapesMéthodologie - adoption d'une norme en 7 étapes
Méthodologie - adoption d'une norme en 7 étapes
 
Ratonera
RatoneraRatonera
Ratonera
 
Mandefa export pour PME
Mandefa export pour PMEMandefa export pour PME
Mandefa export pour PME
 
Seminaire journee 2013 2014
Seminaire journee 2013 2014Seminaire journee 2013 2014
Seminaire journee 2013 2014
 

Similar a PSES - La securite pour les développeurs

La sécurité et php
La sécurité et phpLa sécurité et php
La sécurité et phpneuros
 
Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02Asma Messaoudi
 
Introduction vulnérabilité web
Introduction vulnérabilité webIntroduction vulnérabilité web
Introduction vulnérabilité webdavystoffel
 
Sécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défenseSécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défenseAntonio Fontes
 
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éconisationsCertilience
 
OWASP Top Ten 2007 - Sommaire executif - French version
OWASP Top Ten 2007 - Sommaire executif - French versionOWASP Top Ten 2007 - Sommaire executif - French version
OWASP Top Ten 2007 - Sommaire executif - French versionspl0it
 
Owasp top 10 2010 Resist toulouse
Owasp top 10   2010  Resist toulouseOwasp top 10   2010  Resist toulouse
Owasp top 10 2010 Resist toulouseSébastien GIORIA
 
Techdays 2010 : comment hacker PHP sans se fatiguer
Techdays 2010 : comment hacker PHP sans se fatiguerTechdays 2010 : comment hacker PHP sans se fatiguer
Techdays 2010 : comment hacker PHP sans se fatiguerDamien Seguy
 
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 monitoringDavid BAFFALEUF
 
Les Web Services en 60 diapos chrono !
Les Web Services en 60 diapos chrono !Les Web Services en 60 diapos chrono !
Les Web Services en 60 diapos chrono !Olivier Le Goaër
 
802.1X filaire, un monde idéal illusoire? (Olivier Bilodeau)
802.1X filaire, un monde idéal illusoire? (Olivier Bilodeau)802.1X filaire, un monde idéal illusoire? (Olivier Bilodeau)
802.1X filaire, un monde idéal illusoire? (Olivier Bilodeau)Hackfest Communication
 
Laravel yet another framework
Laravel  yet another frameworkLaravel  yet another framework
Laravel yet another frameworkLAHAXE Arnaud
 
Durcissement de code - Sécurité Applicative Web
Durcissement de code - Sécurité Applicative WebDurcissement de code - Sécurité Applicative Web
Durcissement de code - Sécurité Applicative WebCyrille Grandval
 
201211 drupagora hostingdrupal
201211 drupagora hostingdrupal201211 drupagora hostingdrupal
201211 drupagora hostingdrupalOxalide
 

Similar a PSES - La securite pour les développeurs (20)

La sécurité et php
La sécurité et phpLa sécurité et php
La sécurité et php
 
Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02
 
Introduction vulnérabilité web
Introduction vulnérabilité webIntroduction vulnérabilité web
Introduction vulnérabilité web
 
Sécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défenseSécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défense
 
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
 
OWASP Top Ten 2007 - Sommaire executif - French version
OWASP Top Ten 2007 - Sommaire executif - French versionOWASP Top Ten 2007 - Sommaire executif - French version
OWASP Top Ten 2007 - Sommaire executif - French version
 
Owasp top 10 2010 Resist toulouse
Owasp top 10   2010  Resist toulouseOwasp top 10   2010  Resist toulouse
Owasp top 10 2010 Resist toulouse
 
Techdays 2010 : comment hacker PHP sans se fatiguer
Techdays 2010 : comment hacker PHP sans se fatiguerTechdays 2010 : comment hacker PHP sans se fatiguer
Techdays 2010 : comment hacker PHP sans se fatiguer
 
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
 
Rmll.securite
Rmll.securiteRmll.securite
Rmll.securite
 
Les Web Services en 60 diapos chrono !
Les Web Services en 60 diapos chrono !Les Web Services en 60 diapos chrono !
Les Web Services en 60 diapos chrono !
 
Securite web is_ima
Securite web is_imaSecurite web is_ima
Securite web is_ima
 
802.1X filaire, un monde idéal illusoire? (Olivier Bilodeau)
802.1X filaire, un monde idéal illusoire? (Olivier Bilodeau)802.1X filaire, un monde idéal illusoire? (Olivier Bilodeau)
802.1X filaire, un monde idéal illusoire? (Olivier Bilodeau)
 
La sécurité : ange ou démon ?
La sécurité : ange ou démon ?La sécurité : ange ou démon ?
La sécurité : ange ou démon ?
 
Laravel yet another framework
Laravel  yet another frameworkLaravel  yet another framework
Laravel yet another framework
 
Durcissement de code - Sécurité Applicative Web
Durcissement de code - Sécurité Applicative WebDurcissement de code - Sécurité Applicative Web
Durcissement de code - Sécurité Applicative Web
 
20100114 Waf V0.7
20100114 Waf V0.720100114 Waf V0.7
20100114 Waf V0.7
 
sshGate
sshGatesshGate
sshGate
 
La Sécurité Sur Le Web
La Sécurité Sur Le WebLa Sécurité Sur Le Web
La Sécurité Sur Le Web
 
201211 drupagora hostingdrupal
201211 drupagora hostingdrupal201211 drupagora hostingdrupal
201211 drupagora hostingdrupal
 

Más de Christophe Villeneuve

La boîte à outils de développements dans Firefox
La boîte à outils de développements dans FirefoxLa boîte à outils de développements dans Firefox
La boîte à outils de développements dans FirefoxChristophe Villeneuve
 
controler vos donnees éthiques dans le web
controler vos donnees éthiques dans le webcontroler vos donnees éthiques dans le web
controler vos donnees éthiques dans le webChristophe Villeneuve
 
Open Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnanteOpen Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnanteChristophe Villeneuve
 
Peur de la migration vers l’open source ?
Peur de la migration vers l’open source ?Peur de la migration vers l’open source ?
Peur de la migration vers l’open source ?Christophe Villeneuve
 
La sécurité applicative par le design
La sécurité applicative par le designLa sécurité applicative par le design
La sécurité applicative par le designChristophe Villeneuve
 
Mozilla french speaking community activites
Mozilla french speaking community activitesMozilla french speaking community activites
Mozilla french speaking community activitesChristophe Villeneuve
 
Monitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et MicrosoftMonitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et MicrosoftChristophe Villeneuve
 
Le futur de l'authentification webAuthn
Le futur de l'authentification webAuthnLe futur de l'authentification webAuthn
Le futur de l'authentification webAuthnChristophe Villeneuve
 
Tests d'accessibilite par la pratique
Tests d'accessibilite par la pratiqueTests d'accessibilite par la pratique
Tests d'accessibilite par la pratiqueChristophe Villeneuve
 

Más de Christophe Villeneuve (20)

MariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQLMariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQL
 
La boîte à outils de développements dans Firefox
La boîte à outils de développements dans FirefoxLa boîte à outils de développements dans Firefox
La boîte à outils de développements dans Firefox
 
pister les pisteurs
pister les pisteurspister les pisteurs
pister les pisteurs
 
controler vos donnees éthiques dans le web
controler vos donnees éthiques dans le webcontroler vos donnees éthiques dans le web
controler vos donnees éthiques dans le web
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
 
Mariadb une base de données NewSQL
Mariadb une base de données NewSQLMariadb une base de données NewSQL
Mariadb une base de données NewSQL
 
Open Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnanteOpen Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnante
 
Pentest bus pirate
Pentest bus piratePentest bus pirate
Pentest bus pirate
 
Peur de la migration vers l’open source ?
Peur de la migration vers l’open source ?Peur de la migration vers l’open source ?
Peur de la migration vers l’open source ?
 
La sécurité applicative par le design
La sécurité applicative par le designLa sécurité applicative par le design
La sécurité applicative par le design
 
Foxfooding semaine 3
Foxfooding semaine 3Foxfooding semaine 3
Foxfooding semaine 3
 
Foxfooding
FoxfoodingFoxfooding
Foxfooding
 
Accessibilite web wcag rgaa
Accessibilite web wcag rgaaAccessibilite web wcag rgaa
Accessibilite web wcag rgaa
 
Mozilla french speaking community activites
Mozilla french speaking community activitesMozilla french speaking community activites
Mozilla french speaking community activites
 
Monitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et MicrosoftMonitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et Microsoft
 
Etes vous-pret pour php8 ?
Etes vous-pret pour php8 ?Etes vous-pret pour php8 ?
Etes vous-pret pour php8 ?
 
Le futur de l'authentification webAuthn
Le futur de l'authentification webAuthnLe futur de l'authentification webAuthn
Le futur de l'authentification webAuthn
 
Send large files with addons
Send large files with addonsSend large files with addons
Send large files with addons
 
Tests d'accessibilite par la pratique
Tests d'accessibilite par la pratiqueTests d'accessibilite par la pratique
Tests d'accessibilite par la pratique
 
Donnez la voix aux machines
Donnez la voix aux machinesDonnez la voix aux machines
Donnez la voix aux machines
 

PSES - La securite pour les développeurs

  • 1. @hellosct1 La sécurité pour les développeurs
  • 2. Qui... est Christophe Villeneuve ? afup – lemug.fr – mysql – mariadb – drupal – demoscene – firefoxos – drupagora – phptour – forumphp – solutionlinux – demoinparis – ici et maintenant – eyrolles – editions eni – programmez – linux pratique – webriver – phptv – neuros - elephpant
  • 3. OWASP 2013 ✔ Failles d'injection ✔ Violation d'authentification et de Session ✔ Cross-Site Scripting (XSS) ✔ Référence directe non sécurisée à un objet ✔ Mauvaise configuration de sécurité ✔ Données sensibles accessible ✔ Manque de sécurité au niveau des rôles ✔ Falsification de requête (CSRF) ✔ Utilisation de composants connus vulnérables ✔ Redirections non validées
  • 5. Sommaire ● A => Apache => Architecture / Serveur ● M => MySQL / MariaDB => Base de données ● P => PHP => Langage / webService / API ● Les hackers dans les API Métiers
  • 7. ● A1 - Injection en ligne de commande ● A5 - Mauvaise configuration sécurité ● A6 - Exposition de données sensibles ● NC - Exécution fichiers malicieux
  • 8. ✔ Configuration non à jour ✔ Pas de maintenance ✔ Mise à disposition des fonctions ✔ Exec ✔ System ● Autre manière de prise en main du système ● Serveur Zombie Principe de l'attaque Conséquence Injection de ligne de commandes OWASP : A1 - Injection en ligne de commande
  • 9. Désactiver dans php.ini (pour PHP) – exec – passthru – shell_exec – system – proc_open – popen – curl_exec – curl_multi_exec – parse_ini_file – show_source Affiche le nom de l'utilisateur <?php echo exec('whoami'); ?> Par conséquent : safe_mode = Off allow_url_fopen=Off allow_url_include=Off OWASP : A1 - Injection en ligne de commande
  • 10. Cacher le contenu des dossiers ● Ex : http://votreURL.com/nomDossier ● Solution : fichier index.php <?php header("Location: ../index.php"); die() ; ?> OWASP : A5 - Mauvaise configuration sécurité
  • 11. ✔ Exécuter un fichier (ex : PHPShell) ✔ Accès en écriture ✔ FTP, SSH, HTTP PUT, WebDav... ✔ Absence de contrôle du dépôt des fichiers ✔ Fonction include() ● Prise en main du système ● Accéder à des informations non autorisées Principe de l'attaque Conséquence Exécution fichier malicieux OWASP : NC - Exécution fichiers malicieux
  • 12. Pour se protéger des fichiers malicieux ● <?php Include ($file) ; ?> – Ex : http://votreURL.com/file=toto.php ● Solution – http://votreURL.com/toto.php ● Ecraser le contenu de la variable – http://urlPirate.com/hack.gif ● Solution dans php.ini – allow_url_fopen = off OWASP : A6 - Exposition de données sensibles
  • 13. php_self non bloqué © Source : D4.FR OWASP : A6 - Exposition de données sensibles
  • 14. Protection de base ● Php.ini – safe_mode = off ● Verrouillez les dossiers – .htaccess – Chmod (444) ou 665 ou 775 ● HTTPs / SSL OWASP : A6 - Exposition de données sensibles
  • 16. ● A1 - Injection SQL ● A4 - Référence direct non sécurisés à un objet
  • 17. ✔ Envoie du code SQL ✔ Formulaire ✔ GET / POST ✔ Cookies ✔ ... ✔ Contournement authentification ✔ Récupération des données de la base ✔ Récupération de fichiers ✔ Exécution de codes Principe de l'attaque Conséquence Injection SQL OWASP : A1 - Injection SQL
  • 18. Utilisation du SQL ● Risque : Requête avec des simples quotes SELECT * FROM 'users' WHERE 'username'='$login' AND 'password'='$pass' ● Saisie : $login = hello $pass = hello SELECT * FROM 'users' WHERE 'username'='hello' AND 'password'='hello' ● Saisie : $login = ' OR '1'='1' $pass = ' OR '1'='1' SELECT * FROM 'users' WHERE 'username'='' OR '1'='1'' AND 'password'='' OR '1'='1'' ● Saisie : $login = ' OR 1=1"); drop table users; $pass = SELECT * FROM 'users' WHERE 'username'='' OR 1=1"); drop table users;' AND 'password'='' TRUE TRUE TRUE Sauf si BDD lecture OWASP : A1 - Injection SQL
  • 19. Se protéger contre injection SQL ● addslashes() – Ajoute des antislashs dans une chaîne SELECT * FROM 'users' WHERE 'username'=' ' OR '1'='1' ' AND 'password'=' ' OR '1'='1' ' mysqli_real_escape_string() – Protège les caractères spéciaux ● pdo_quote() – Place des guillemets simples autour d'une chaîne entrée les guillemets simples ' les guillemets doubles " les slashes / les caractères NULL OWASP : A1 - Injection SQL
  • 20. ✔ Absence de contrôle dans une requête ✔ Récupération d'une valeur visible + modification ✔ Trouver d'autres données et informations ✔ ✔ Usurpation d'identifiant ✔ Effectué des opérations non prévues initialement Principe de l'attaque Conséquence Modifier les arguments dynamiquement OWASP : A4 - Référence direct non sécurisés à un objet
  • 21. Comportement des objets ● Mauvaise utilisation <?php $sql = "SELECT * FROM users WHERE id = :id " ; $qid = $cnx->prepare($sql); $qid->execute (array (':id', $id) ) ; $rows = $qid->fecthAll(PDO::FETCH_ASSOC) ; ?> ● Exemple http://votreURL.com/compte?id=IdFalse ● Une solution $qid->bindParam(':id', $id, PDO::PARAM_INT); $qid->bindParam(':id', $id, PDO::PARAM_STR, 12); $qid->execute () ; OU OWASP : A4 - Référence direct non sécurisés à un objet
  • 23. ● A1 – Injection API ● A2 -Violation de gestion d'authentification et de session ● A3 - Cross Site Scripting (XSS) ● A6 - Exposition de données sensibles ● A7 - Manque de contrôle d'accès au niveau fonctionnel ● A8 - Falsification de requête intersites (CSRF) ● A9 - Utilisation de composants vulnérable ● A10 - Redirections et renvois non validés OWASP : A1 - Injection en ligne de commande
  • 24. Provenance coté front ● Navigation ● Formulaire – Champs : Input, upload,... ● Des API Couche Métier OWASP : A1 – Injection API
  • 25. ✔ Suivi des utilisateurs par SESSION ID ✔ Caractéristiques utilisateur stockées coté serveur par une variable de session ✔ Gestion des états : Cookies / Get / Post ✔ Chiffrement faible ✔ Vol des données SESSION_ID si elles ne sont pas cryptées ✔ Utilisation ailleurs Principe de l'attaque Conséquence Gestion des données entrées OWASP : A2 -Violation de gestion d'authentification et de session
  • 26. Solution de contrôle (1/3) ● Prévoir la présence d'une clef de hashage caché – Générer une clef cryptée de hachage ● IP ● Navigateur utilisé ● Une durée de validité ● ... – Différencier les formulaires – Eviter la protection en MD5 pour HASH OWASP : A2 -Violation de gestion d'authentification et de session
  • 27. Solution de contrôle (2/3) ● Remède contre Session ID – Cryptage par HASH – Eviter le MD5 avec la date de connexion – Contenu aléatoire ● Oublier les champs Hidden avec des caractéristiques utilisateur OWASP : A2 -Violation de gestion d'authentification et de session
  • 28. Solution de contrôle (3/3) ● Lors de l'envoie d'un formulaire, quelques bases – If isset($_POST['string']) { /* … */ } – If sizeof ($_POST['string'])>0 { /* ... */ } ● Attention aux superglobales $GLOBALS, $_SERVER, $_GET, $_POST, $_FILES, $_SESSION, $_REQUEST, $_ENV – $str=htmlentities ($_COOKIE['string'],ENT_QUOTES) ; OWASP : A2 -Violation de gestion d'authentification et de session
  • 29. ✔ XSS ✔ Risque applicatif ✔ Langage de requête ✔ Ldap / Xpath ✔ Langage interprété du type ✔ eval, system, consorts ✔ Vol de sessions (cookies) ✔ Redirection de pages ✔ Scanner des pages ✔ Usurpation d'identitée / Phishing ✔ Contrôle du navigateur Principe de l'attaque Conséquence Naviguer dans les pages webs OWASP : A3 - Cross Site Scripting (XSS)
  • 30. La navigation en mode tranquille ● Absence de protection <?php echo "Un petit risque de <script>alert ('hack')</script>"; ?> ● Avec une protection <?php echo htmlentities("Un petit risque de <script>alert ('hack')</script>"); ?> OWASP : A3 - Cross Site Scripting (XSS)
  • 31. Contre mesures ● Données entrantes : – Valider chaque valeur (longueur, type...) filter_var() ou filter_input() – strip_tags // supprime caractère NULL – Htmlentities // balise html ● Données en sortie : – Htmlspecialchars() ; OWASP : A3 - Cross Site Scripting (XSS)
  • 32. Se protéger de PHP_SELF Exemple : <form action="<?php echo $_SERVER['PHP_SELF']; ?>"> <input type="text" name="exemple" value="reussi" /> <input type="submit" value="Submit" /> </form> ● Dans un formulaire ou construction d'une URL <?php echo htmlentities($_SERVER['PHP_SELF']); ?> OWASP : A6 - Exposition de données sensibles
  • 33. ✔ Accéder à des pages non autorisés ✔ Modifier les droits ✔ Prise de contrôle du site ✔ Générer des actions non autorisés Principe de l'attaque Conséquence Contrôle d'accès au niveau fonctionnel OWASP : A7 - Manque de contrôle d'accès au niveau fonctionnel
  • 34. Solution contrôle d'accès ● Exemple – http://urlSite.com/getpage – http://urlSite.com/admin_getpage ● Solutions – Vérifier le contrôle d'accès (principe identification) – Vérifier les URLs OWASP : A7 - Manque de contrôle d'accès au niveau fonctionnel
  • 35. ✔ Trouver ✔ des données stockés / archivés en clair ✔ Espace privée non partagée ✔ Communication avec la banque ✔ Déterminer les algorithmes de cryptage faible ✔ Cible principale ✔ Mot de passes ✔ Données sensibles non chiffrées ✔ Carte bleu Principe de l'attaque Conséquence Exposition de données sensibles OWASP : A1 / A6 / A10
  • 36. Filtrer les données sensibles ● Utilisation du port https if($_SERVER['SERVER_PORT'] != 443) { header('Location: https://urlDuSite.com/prive.php'); exit; } ● Vérifier le certificat <?php if (!isset($_SERVER['SSL_CLIENT_M_SERIAL']) || !isset($_SERVER['SSL_CLIENT_V_END']) || !isset($_SERVER['SSL_CLIENT_VERIFY']) || $_SERVER['SSL_CLIENT_VERIFY'] !== 'SUCCESS' || !isset($_SERVER['SSL_CLIENT_I_DN']) ) { //FALSE; } if ($_SERVER['SSL_CLIENT_V_REMAIN'] <= 0) { // FALSE; } // TRUE; ?> OWASP : A6 / A9 / A10
  • 37. ✔ Falsification de requêtes (CSRF) ✔ Modification du contenu d'une page ✔ But éviter de passer par le formulaire ✔ Conduire l'utilisateur vers un site malveillant ✔ Lui forcer la main ✔ Ex : download Principe de l'attaque Conséquence Modifier le comportement OWASP : A8 - Falsification de requête intersites (CSRF)
  • 38. Imposer un comportement ● Créer un token ou un jeton de sécurité (toutes les pages) <?php session_start(); $token = uniqid(rand(), true); // jeton unique $_SESSION['token'] = $token; // stockage // heure de création du jeton $_SESSION['token_time'] = time(); ?> <html><body> <form id="form" name="form" method="post" action="traitement.php"> ... <input type="hidden" name="token" id="token" value="<?php echo $token;?>"/> ... </form> </body></html> <?php session_start(); if(isset($_SESSION['token']) && isset($_SESSION['token_time']) && isset($_POST['token'])) { //Si jeton session = au formulaire if($_SESSION['token'] == $_POST['token']) { // exécution du code } } // sinon erreur ?> Passage 1 Passage 2 OWASP : A8 - Falsification de requête intersites (CSRF)
  • 39. Impact dans les API Métier Les hackers sont astucieux
  • 40. ✔ Envoie du code SQL ● Formulaire ● GET / POST ● Cookies ● ... ✔ Contournement authentification ✔ Récupération des données de la base ✔ Récupération de fichiers ✔ Exécution de codes Principe de l'attaque Conséquence API Métier : connexion LDAP OWASP : A1 – Injection API
  • 41. Comportement injection LDAP ● Formulaire exemple <input type="text" size=20 name="username"> ● Connexion Ldap String ldapSearchQuery = "(cn=" + $username + ")"; System.out.println(ldapSearchQuery); ● Solution – Valider les données avant de générer une requête de recherche OWASP : A1 – Injection API
  • 42. Webservices function encrypt_decrypt($action, $string) { $output = false; $encrypt_method = "AES-256-CBC"; $secret_key = 'votre clef secrete'; $secret_iv = 'vecteur aleatoire secret'; $key = hash('sha256', $secret_key); // hash // prepare une methode de cryptage sur 16 caractères $iv = substr(hash('sha256', $secret_iv), 0, 16); if( $action == 'encrypt' ) { $output = openssl_encrypt($string, $encrypt_method, $key, 0, $iv); $output = base64_encode($output); } else if( $action == 'decrypt' ){ $output = openssl_decrypt(base64_decode($string), $encrypt_method, $key, 0, $iv); } return $output; } Code Mini PHP 5.4.x OWASP : A1 – Injection API
  • 43. ✔ Librairy ✔ ORM ✔ API ● Framework ● CMS ● CRM/ERP ● … ✔ Voir le début de la présentation Principe de l'attaque Conséquence HS : Applications OWASP : Hors Sujet (voir Owasp Projet)
  • 44.
  • 45. Les impacts pour un développement Classement OWASP 2013 Serveur LangageBDD X X X X X X X X A1-Failles d'injection A2-Violation d'authentification et de Session A3-Cross-Site Scripting (XSS) A4-Référence directe non sécurisée à un objet A5-Mauvaise configuration de sécurité A6-Données sensibles accessible A7-Manque de sécurité au niveau des rôles A8-Falsification de requête (CSRF) A9-Utilisation de composants connus vulnérables A10-Redirections non validées X X X NC- Exécution fichiers malicieux X X X