La sécurité web pour les développeurs PHP - Présentation effectuée à Pas Sage En Seine 2015 par Christophe Villeneuve (Hello / Sector One)
Podcast Video : http://data.passageenseine.org/2015/mp4/PSES2015_securite-web-developpeurs.mp4
Damien Seguy, co-auteur du livre "Sécurité PHP" (éditions Eyrolles) et membre du PHPGroup. L’atelier consiste à examiner une vraie application PHP présentée puis de tenter toutes les manœuvres retorses possibles pour la mettre en péril.
Comprendre la sécurité web - Présentation effectuée à "Ubuntu Paris 1610" par Christophe Villeneuve.
La sécurité est une affaire de tous. Il est indispensable d'en prendre comprendre les concepts et de se protéger
Auditer son code pour plus de sécurité. Damien Seguy
Un bon audit, c’est-à-dire un regard sans complaisance sur les petits travers du code, la configuration et de l’architecture d’une application.
Différentes techniques permettent d’évaluer PHP et les applications Web : les tests automatiques, le fuzzing, les scénarios, les tests boîte
noire, les analyses à code ouvert.
La sécurité web pour les développeurs PHP - Présentation effectuée à Pas Sage En Seine 2015 par Christophe Villeneuve (Hello / Sector One)
Podcast Video : http://data.passageenseine.org/2015/mp4/PSES2015_securite-web-developpeurs.mp4
Damien Seguy, co-auteur du livre "Sécurité PHP" (éditions Eyrolles) et membre du PHPGroup. L’atelier consiste à examiner une vraie application PHP présentée puis de tenter toutes les manœuvres retorses possibles pour la mettre en péril.
Comprendre la sécurité web - Présentation effectuée à "Ubuntu Paris 1610" par Christophe Villeneuve.
La sécurité est une affaire de tous. Il est indispensable d'en prendre comprendre les concepts et de se protéger
Auditer son code pour plus de sécurité. Damien Seguy
Un bon audit, c’est-à-dire un regard sans complaisance sur les petits travers du code, la configuration et de l’architecture d’une application.
Différentes techniques permettent d’évaluer PHP et les applications Web : les tests automatiques, le fuzzing, les scénarios, les tests boîte
noire, les analyses à code ouvert.
Php 2 - Approfondissement MySQL, PDO et MVCPierre Faure
Introduction au langage de programmation PHP.
Présentation réalisée la première fois le lundi 10 mars 2014 à l'IIM : Institut de l'Internet et du Multimédia pour les années préparatoires.
Cette présentation a pour but d'approfondir les compétences PHP des élèves : utiliser des bases de données, comprendre PDO et le modèle MVC (basique).
Après présentation orale de ces slides, des exercices de mise en pratique ont été réalisés en Atelier avec les élèves.
L'exercice principal était de construire une plateforme similaire à twitter selon un modèle MVC.
Voici le plan de la présentation :
• Les bases de données : MySQL
- Principe
- phpMyAdmin
- Interagir avec une BDD
• Les fonctions
- La machine à carottes
- Exemple avec MySQL
- Les fonctions PHP
• Modèle Vue Contrôleur - MVC
- Principe
- Mise en pratique
• Quelques trucs à savoir a.$_FILES et $_POST
- $_SESSION
- L’indentation
- PHP + HTML = ?
Vous avez déjà travaillé avec de vieux projet PHP (3,4), du “include-ception” ou tout simplement un framework non PSR-0? Voici un retour sur les étapes employé dans différent cas de migration de “legacy” vers Symfony 2.
OWASP Top Ten 2007 - Sommaire executif - French versionspl0it
Presentation faite au chapitre OWASP Montreal, le 24 fevrier 2009. Sommaire executif, visuel et haut niveau. Permet de comprendre visuellement le Top Ten avec des exemples concrets, pour attirer l'interet des gestionnaires d'entreprise sur l'importance de la securite applicative.
Dans cet article, vous allez voir comment créer facilement une barre de progression en temps réel grâce aux nouvelles variables de session ajoutées à PHP 5.4
- https://github.com/pH-7/PHP5.4-Session-Upload-Progress-Bar
- http://ph7.me
- https://www.php.net/manual/fr/session.upload-progress.php
Dans cet article, vous allez voir comment protéger votre site en utilisant la technique du "Pot de Miel".
- https://github.com/pH-7/
- https://github.com/pH-7/Honeypots
- http://ph7.me
Las Cataratas Victoria se encuentran en la frontera entre Zambia y Zimbabue, midiendo aproximadamente 1.7 km de ancho y 108 m de altura. Fueron nombradas en honor a la reina Victoria por el explorador David Livingstone en 1855. Forman parte de dos parques nacionales y fueron declaradas Patrimonio de la Humanidad en 1989.
- La sécurité informatique est de nos jours devenue un problème majeur dans la gestion des réseaux d’entreprise ainsi que pour les particuliers. Toujours plus nombreux à se connecter à Internet. La transmission d’information sensible et le désire d’assurer la confidentialité de celles-ci est devenue un point primordial dans la mise en place des réseaux informatiques. Ce document a pour but de présenter globalement la manière dont les « Hackers » opèrent afin de pénétrer les systèmes informatiques en espérant qu’il aide à pallier à ce type de problème de plus en plus fréquent …
Php 2 - Approfondissement MySQL, PDO et MVCPierre Faure
Introduction au langage de programmation PHP.
Présentation réalisée la première fois le lundi 10 mars 2014 à l'IIM : Institut de l'Internet et du Multimédia pour les années préparatoires.
Cette présentation a pour but d'approfondir les compétences PHP des élèves : utiliser des bases de données, comprendre PDO et le modèle MVC (basique).
Après présentation orale de ces slides, des exercices de mise en pratique ont été réalisés en Atelier avec les élèves.
L'exercice principal était de construire une plateforme similaire à twitter selon un modèle MVC.
Voici le plan de la présentation :
• Les bases de données : MySQL
- Principe
- phpMyAdmin
- Interagir avec une BDD
• Les fonctions
- La machine à carottes
- Exemple avec MySQL
- Les fonctions PHP
• Modèle Vue Contrôleur - MVC
- Principe
- Mise en pratique
• Quelques trucs à savoir a.$_FILES et $_POST
- $_SESSION
- L’indentation
- PHP + HTML = ?
Vous avez déjà travaillé avec de vieux projet PHP (3,4), du “include-ception” ou tout simplement un framework non PSR-0? Voici un retour sur les étapes employé dans différent cas de migration de “legacy” vers Symfony 2.
OWASP Top Ten 2007 - Sommaire executif - French versionspl0it
Presentation faite au chapitre OWASP Montreal, le 24 fevrier 2009. Sommaire executif, visuel et haut niveau. Permet de comprendre visuellement le Top Ten avec des exemples concrets, pour attirer l'interet des gestionnaires d'entreprise sur l'importance de la securite applicative.
Dans cet article, vous allez voir comment créer facilement une barre de progression en temps réel grâce aux nouvelles variables de session ajoutées à PHP 5.4
- https://github.com/pH-7/PHP5.4-Session-Upload-Progress-Bar
- http://ph7.me
- https://www.php.net/manual/fr/session.upload-progress.php
Dans cet article, vous allez voir comment protéger votre site en utilisant la technique du "Pot de Miel".
- https://github.com/pH-7/
- https://github.com/pH-7/Honeypots
- http://ph7.me
Las Cataratas Victoria se encuentran en la frontera entre Zambia y Zimbabue, midiendo aproximadamente 1.7 km de ancho y 108 m de altura. Fueron nombradas en honor a la reina Victoria por el explorador David Livingstone en 1855. Forman parte de dos parques nacionales y fueron declaradas Patrimonio de la Humanidad en 1989.
- La sécurité informatique est de nos jours devenue un problème majeur dans la gestion des réseaux d’entreprise ainsi que pour les particuliers. Toujours plus nombreux à se connecter à Internet. La transmission d’information sensible et le désire d’assurer la confidentialité de celles-ci est devenue un point primordial dans la mise en place des réseaux informatiques. Ce document a pour but de présenter globalement la manière dont les « Hackers » opèrent afin de pénétrer les systèmes informatiques en espérant qu’il aide à pallier à ce type de problème de plus en plus fréquent …
préparation à la certification LPIC2 version 3.5 en français
Chapitre 8 : Topic 208 : Services Web
Configuration de Apache2 et Squid
Partie 3 : sécurisation d'un serveur web avec ssl
Topic 208.2 partie 2
Mise en place de l'https sur Apache2 via mod_ssl et openssl.
Supports créés par Noël Macé sous Licence Creative Commons BY-NC-SA.
préparation à la certification LPIC2 version 3.5 en français
Chapitre : Topic 210 : Gestion des clients réseau
Configuration des serveurs DHCP, de l'authentification PAM et du client LDAP
Partie 1 : authentification PAM
Topic 210.2
Fichiers, termes et utilitaires de configuration de PAM
Présentation des modules pam_unix, pam_cracklib, pam_limits et pam_listfile
Supports créés par Noël Macé sous Licence Creative Commons BY-NC-SA.
préparation à la certification LPIC2 version 3.5 en français
Chapitre 8 : Topic 208 : Services Web
Configuration de Apache2 et Squid
Partie 1 : mise en place d'un serveur web
Introduction au serveur web Apache2
Présentation, installation, configuration
08 04 mise en place d'un serveur mandataire (proxy)Noël
préparation à la certification LPIC2 version 3.5 en français
Chapitre 8 : Topic 208 : Services Web
Configuration de Apache2 et Squid
Partie 4 : mise en place d'un serveur mandataire (proxy)
Topic 208.3
Installation, configuration et gestion du Proxy Squid sous GNU/Linux.
Supports créés par Noël Macé sous Licence Creative Commons BY-NC-SA.
ASFWS 2012 - Les utilités d’un pare-feu applicatif Web (WAF) par Jonathan MarcilCyber Security Alliance
Vous hébergez des applications Web et votre défense se limite à un coupe-feu réseau. Cependant, une grande partie des attaques sont menées directement via le protocole HTTP et l’utilisation d’un coupe-feu traditionnel s’avère inutile.
Le coupe-feu applicatif Web (Web Application Firewall, WAF) se veut une solution à cette problématique. La présentation, basée sur mon expérience des dernières années, fait le point sur les diverses utilités de cette technologie :
Les choix d’implémentations. Les diverses modes de fonctionnements. L’importance et le choix des types de règles à implémenter. Rapports et collection des alertes. Méthodologie de développement de règles. Bonus: Contournement de règles et exceptions.
Le logiciel Open Source ModSecurity sera utilisé comme exemple ainsi que les règles OWASP CRS. D’autres règles conçues pour la présentation seront aussi présentées dans le but de démontrer une utilisation sur mesure du WAF.
La sécurité des bases de données est une condition critique à leur exploitation. Effacement, falsification ou simplement divulgation sont les menaces les plus sérieuses qui rôdent et attendent le premier faux-pas des administrateurs. Il est primordial de bien connaître les aspects sécurité de MySQL, et de faire des choix éclairés parmi les protections natives.Durant cette présentation nous examinerons le système de droits, les directives de configurations, les techniques d'intrusion et les vulnérabilités sur le Web : pour chaque menace, nous verrons quels sont les défenses disponibles pour se protéger efficacement.
Le 802.1X est un standard englobant l'identification et l'authentification des utilisateurs d'un réseau afin d'en contrôler l'autorisation d'accès. De plus en plus déployé, car les réseaux récemment rehaussés le supportent, cet ensemble de technologies comporte néanmoins plusieurs limites méconnues. Cette présentation vise, tout d'abord, à expliquer sommairement le 802.1X et à partager les défis et problèmes d'un tel déploiement. Ensuite, nous couvrirons certaines solutions rencontrées pour palier aux problèmes et nous verrons comment les contourner (et comment prévenir le contournement). Nous terminerons avec un regard vers les standards et technologies à l'horizon qui vont transformer la situation actuelle.
Découverte de l'environnement de la philosophie et du fonctionnement de Laravel. Pourquoi un tel succès ?
Présentation de différents composant Open Source qui permettent de débuter rapidement un projet Laravel.
Cette présentation fait partie d'une suite de présentations technologiques appelée "Symposium" chez Versusmind. Toutes les présentations sont disponibles sur http://versusmind.eu.
Présentation effectuée à la création numérique "Alchimie 12" par Christophe Villeneuve sur "Comprendre la sécurité web en 2017".
Vous allez voir pourquoi la sécurité ne doit pas être pris à la légère. Mais heureusement des solutions existes
Présentation effectuée au Capitole du Libre (17 novembre 2019) par Christophe Villeneuve sur "La sécurité aux coeurs des projets webs de demain".
Une occasion pour voir les possibilités de mieux comprendre la sécurité dans les développements webs
Durcissement de code - Pourquoi durcir son code ? Quand le faire ? Comment s’y prendre ?
Cyrille Grandval & Maxence Perrin répondent à ces problématiques que se posent de nombreux acteurs du Web lors de la conférence d'ouverture de la 1ère édition du WebDay ESGI.
Présentation effectuée à la "DEV CON #5" par Christophe Villeneuve sur "La sécurité : ange ou démon ?".
La conférence a pour but de montrer que la sécurité ne doit pas être négligler et qu'il est possible de bloquer les attaques de personnes ayant de mauvaises intentions
Similaire à La sécurite pour les developpeurs - OWF (20)
Présentation effectuée à Open Source Expérience 2022 par Christophe Villeneuve et Sébastien de MariaDB sur "MariaDB : une base de données NewSQL".
Cette présentation a pour but de montrer que la base de données Mariadb propose des nouvelles fonctionnalités et avancés importantes pour devenir un coeur
Présentation effectuée à Paris Web par Christophe Villeneuve sur "La boîte à outils de développements dans Firefox".
Cette présentation a pour but d'aider les développeurs à améliorer leur projet en respectant les normes et standard de W3C
Présentation effectuée au à l'Owasp mensuel (18 Mai 2022) par Christophe Villeneuve sur "Pister les pisteurs".
Cette présentation aborde la visualisation des cookies tiers et la nouvelle extension qui propose de voir si votre projet est "Green IT"
Présentation effectuée à l'événement CyberGames de EGE (17 mai 2022) par Christophe Villeneuve sur "Contrôlez vos données éthiques dans le web".
Cette présentation aborde l'importance des données et des risques que vous pouvez rencontrer sur le web
Présentation effectuée au Meetup 24 Programmez (5 Avril 2022) par Christophe Villeneuve sur "Infrastructure as code Drupal".
Cette présentation aborde les rappels de l'IaC (infrastructure as code), comment l'utilisé avec le CMS Drupal et déployé automatiquement le contenu et les évolutions dans l'IaC.
Présentation effectuée pendant la piscine du POC Innovation de Epitech (15 février 2022) par Christophe Villeneuve avec Sébastien "MariaDB : une base de données NewSQL".
Après un tour d'horizon de l'évolution des bases de données, nous nous intéresserons sur la base de données MariaDB qui propose le NewSQL (NoSQL + SQL) et ces différents storages engines disponibles. Ainsi chaque problématique projet peut être couverte par celle-ci.
Présentation effectuée pendant la piscine du POC Innovation de Epitech (14 février 2022) par Christophe Villeneuve sur "Open Source et Contribution : une association gagnante".
La présentation permet de voir que la contribution est importante au même titre que l'open source
Présentation effectuée à la DevCon 12 (16 décembre 2021) par Christophe Villeneuve sur "Pentest Bus Pirate".
Une occasion de voir comment effectuer des pentests sur de l'IoT
Présentation effectuée à l'Open Source Expérience (9 novembre 2021) par Christophe Villeneuve sur "Peur de la migration vers l’open source ?".
Sujet : 2020 fut marqué par de nombreux anniversaires. Ainsi PHP, MySQL, Drupal… ont proposé de nombreuses évolutions et améliorations dans les technologies ouvertes permettant de garder le Web ouvert.
La session abordera les freins à la migration vers des environnements modernes. Christophe s’intéressera aux problématiques d’aujourd’hui dans un serveur AMP (Apache MariaDB PHP) avec comme solution un portail de type Drupal. La souplesse de ces technologies répond aux problématiques modernes.
Présentation effectuée à GS Days (4 novembre 2021) par Christophe Villeneuve sur "La sécurité applicative par le design ".
Sujet : La sécurité doit commencer dès la conception d’un projet ou d’une application Web. Cette étape est nécessaire pour atténuer l’impact des cybermenaces lors de la mise en production. Cette session identifiera ce que l’on peut attendre d’une application Web sécurisée qui garantit une certaine qualité pour les données et vous protège contre les malveillances, les erreurs et la malchance, et leur impact.
Présentation effectuée au Meetup Firefox User Group fr (28 avril 2021)par Christophe Villeneuve sur "Foxfooding Semaine 3 : Aidez à produire le meilleur firefox".
Vous allez voir les fonctionnalités disponible dans firefox 89
Présentation effectuée à la AOSC (28 janvier 2020) par Christophe Villeneuve sur "L'accessibilité web avec WCAG et RGAA".
Vous verrez les notions générales de l'accessibilité, le moyen de le mettre en place dans son code et valider avec des outils si l'ensemble du référentiels est respecté.
This document discusses the weekly activities of the French-speaking Mozilla community. It includes a to-do list that covers hot topics, article planning, events, social media calendars and statistics, answering questions, and updates to sites and blogs. The community communicates using Telegram, Matrix, and weekly Zoom meetings. Activities include localization, forums support, documentation, and discussions. Events follow a standard procedure from announcement to post-event coverage. The to-do list has been used since 2014 and provides details for each discussion point. The community is led by several people and more information is available by contacting them.
Présentation effectuée à la DevCon (19 novembre 2020) par Christophe Villeneuve sur "Monitoring dynamique : Grafana & Microsoft".
Sous la forme de cas pratique, la présentation montre une manière de monitorer dynmaiquement les produits Microsoft tel que Azure, office 365, SQL Server...
Présentation effectuée au Meetup Programmez (08 septembre 2020)par Christophe Villeneuve sur "Etes-vous prêt pour PHP 8 ?".
Vous allez voir l'avancement du langage PHP, les nouveautés, les améliorations
Présentation effectuée au Meetup Lizard Secu (27 aout 2020)par Christophe Villeneuve sur "Le futur de l'authentification WebAuthn".
Vous allez voir comment se passer du mot de passe en utilisant WebAuthn
Talk at the Virtu-All-Hands (June 18, 2020) by Christophe Villeneuve on "Send large files with addons".
3 extensions to communicate easily with Firefox send
Présentation effectuée au Virtu-All-Hands (18 juin 2020) par Christophe Villeneuve sur "Send large files with addons".
3 extensions pour communiquer facilement avec Firefox send
Présentation effectuée au meetup Devops Tahiti (3 juin 2020) par Christophe Villeneuve sur "Tests d'accessibilité par la pratique".
Deux outils complémentaires d'accessibilités, sont présentés pour vous aider à valider votre code
Présentation effectuée à Confoo 2020 (27 février 2020) par Christophe Villeneuve sur "Donnez la voix aux machines".
Vous allez voir l'avancé de ces appareils, des projets libres comme Common Voice et DeepSpeech, la qualité des participations et contributions
Consulter le site officiel https://voice.mozilla.org
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
7. ● A1 - Injection en ligne de commande
● A5 - Mauvaise configuration sécurité
● A6 - Exposition de données sensibles
● NC - Exécution fichiers malicieux
8. Injection de ligne de commandes
Principe de l'attaque Conséquence
✔ Configuration non à jour
✔ Pas de maintenance
✔ Mise à disposition des
fonctions
✔ Exec
✔ System
● Autre manière de prise en
main du système
● Serveur Zombie
●
OWASP : A1 - Injection en ligne de commande
9. Désactiver dans php.ini
– 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. Principe de l'attaque Conséquence
✔ 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
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
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. Principe de l'attaque Conséquence
✔ 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
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'
TRUE
● Saisie : $login = ' OR '1'='1' $pass = ' OR '1'='1'
SELECT * FROM 'users' WHERE 'username'='' OR '1'='1'' AND 'password'='' OR '1'='1''
TRUE
TRUE
● Saisie : $login = ' OR 1=1"); drop table users; $pass =
SELECT * FROM 'users' WHERE 'username'='' OR 1=1"); drop table users;' AND
'password'=''
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. Modifier les arguments dynamiquement
Principe de l'attaque Conséquence
✔ 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
OWASP : A4 - Référence direct non sécurisés à un objet
21. Comportement des objets
● Exemple
http://votreURL.com/compte?id=IdFalse
● 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) ;
?>
● 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. Principe de l'attaque Conséquence
✔ 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
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. Naviguer dans les pages webs
Principe de l'attaque Conséquence
✔ 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
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. Contrôle d'accès au niveau fonctionnel
Principe de l'attaque Conséquence
✔ Accéder à des pages non
autorisés
✔ Modifier les droits
✔ Prise de contrôle du site
✔ Générer des actions non
autorisés
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. Principe de l'attaque Conséquence
✔ 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
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. Principe de l'attaque Conséquence
✔ 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
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)
Passage 1 Passage 2
<?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
?>
OWASP : A8 - Falsification de requête intersites (CSRF)
40. API Métier : connexion LDAP
Principe de l'attaque Conséquence
✔ 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
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
44. Les impacts pour un développement
Classement OWASP 2013 Serveur BDD Langage
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