Entreprise Security API

Le 11-12-2009

Dotsafe soutient le projet ESAPI de l'OWASP en apportant ses compétences pour le développement de la version PHP. Le but d'ESAPI est de permettre aux développeurs de mettre en place des contrôles de sécurité sûrs dans leurs applications web.

OWASP ESAPI est une architecture basée sur le travail des plus grands experts internationaux en sécurité des applications web. Cette API se décline sur de nombreux langages : JAVA EE, .NET, ASP, PHP, ColdFusion, Python et Haskell.

ESAPI fournit aux développeurs web une API de sécurité complète :

ESAPI Architecture

Elle apporte une solution à chacune des vulnérabilités de l'OWASP Top Ten (Les 10 failles les plus critiques sur le web):


ESAPI face à l'OWASP Top 10

Authenticator

Authenticator apporte des méthodes pour authentifier un utilisateur, le déconnecter, gérer sa session, vérifier la force d'un mot de passe voire générer un mot de passe suffisamment fort.

User

User permet la gestion des comptes utilisateurs, la gestion des mots de passe, des niveaux de privilège,...

AccessController

AccessController gère les autorisations d'accès. Pour chaque utilisateur ou rôle, on peut définir finement la politique d'accès. On peut choisir de définir les autorisations pour :

  • l'accès à une donnée
  • l'accès à un fichier
  • l'utilisation d'une fonction
  • l'utilisation d'un service
  • l'accès à une URL

AccessReferenceMap

AccessReferenceMap offre un moyen souple et sécurisé pour le téléchargement de fichier. Par exemple grâce à l'emploi de ce module, le lien:

http://www.dotsafe.fr/dl.php?file=rapports.xml devient http://www.dotsafe.fr/dl.php?file=DS8TD3JS23

Ainsi il est impossible de manipuler la requête HTTP pour télécharger un fichier arbitraire.

Validator

Validator permet de valider toutes les données en entrée. Grâce à la liste d'expressions régulières fournie par l'API, il est aisé de valider qu'une donnée se conforme à un format attendu ou qu'elle ne dépasse pas une certaine taille. Validator sera la première ligne de défense de votre application dans tous les échanges avec les utilisateurs et les systèmes distants.

Encoder

Encoder permet de résoudre le problème récurrent de l'injection de code. Que ce soit les injections SQL, LDAP, Javascript, ... les valeurs malveillantes sont désarmorcées grâce à un échappement des données qu'elles contiennent. De plus, ce module gère parfaitement la canonicalisation. Ce type d'attaque est couramment utilisé par les pirates pour contourner les filtres de sécurité grâce à un surencodage des données. Le caractère "<" est à surveiller de très près lors de la validation de données. Pour celui-ci, il n'y a pas moins de 150 encodages différents. La canonicalisation permet de régler ce problème.

HTTPUtilities

HTTPUtilities offre un moyen sécurisé de gérer les échanges HTTP : cookie sécurisé, redirection, protection CSRF, ...

Encryptor

Encryptor donne accès à des méthodes de cryptographie forte. On peut signer (de manière cryptographique) une donnée, la sceller pour une certaine durée ou utiliser les fonctions de hachage pour stocker des mots de passe "saltés".

EncryptedProperties

EncryptedProperties fournit un espace fortement crypté sur le serveur pour permettre le stockage de valeurs confidentielles comme des mots de passe et autres.

Randomizer

Bien souvent, les applications sont amenées à fournir des valeurs aléatoires pour par exemple générer un mot de passe, un code client, ... L'entropie du système de génération est déterminante. Si l'aléa est mauvais, un pirate pourra deviner la valeur générée et ainsi accéder à des ressources interdites.

SecurityException

La gestion des erreurs est très importante dans votre application. Une erreur dans une application peut permettre des fuites d'informations. Cela peut aider le pirate à comprendre comment fonctionne le système et ainsi faciliter une intrusion. Pire, une erreur mal gérée peut rendre votre application vulnérable.

Logger

Logger apporte une gestion des messages d'erreurs performante dans votre application. Le suivi du fonctionnement de votre application est indispensable pour détecter efficacement des problèmes. Toutes les exceptions générées par ESAPI sont automatiquement reportées dans ce système centralisé.

IntrusionDetector

IntrusionDetector permet de détecter un comportement suspect et de prendre les contremesures qui s'imposent comme la désactivation du compte, la déconnexion ou l'enregistrement dans les logs. Si par exemple un de vos utilisateurs essaye d'accéder de manière répétée au panneau d'administration, vous pouvez décider de désactiver son compte et de le déconnecter. Cela va permettre d'entraver l'intrusion, un obstacle de plus qui va décourager le pirate.

SecurityConfiguration

Toutes les informations sensibles concernant la configuration de ESAPI sont stockées à un même endroit (ESAPI.xml). Les algorithmes de cryptage à employer, les clefs secrètes, les espaces de stockage de fichier, les expressions régulières de validation, ... tout ceci se trouve regroupé dans le fichier de configuration central.

ESAPI est un projet très prometteur. Plusieurs organisations ont déjà commencé à adopter cette API dont American Express, Apache foundation, US Navy ou encore le SANS Institute. En outre, le framework STRUTS intègrera la version Java d'ESAPI.

On vous rappelle ?

Indiquez votre numéro de téléphone

ainsi que la tranche horaire où vous êtes disponible. Nous vous appellerons dans les plus brefs délais

 

Actualités

  • 30-07-2010 Sécurité de Typo3 & entropie de rand()
  • 28-07-2010 Décompilation d'application flash
  • 06-04-2010 Les 9 objections à la sécurité des sites internet - Développement externalisé