Bases de Sécurité

La sécurité informatique est un enjeu majeur dans le monde de l’entreprise. Trois objectifs principaux s’en dégagent. Il faut tout d’abord s’assurer de l’intégrité des données, elles ne doivent pas être altérées. De plus, il est essentiel d’en garantir la disponibilité dans le cadre prévu. Et enfin il faut évidemment veiller à la confidentialité des données. Il est également possible d’ajouter trois autres objectifs que sont la traçabilité de la donnée ce qui signifie concrètement que l’accès ou la tentative d’accès à la donnée est conservé. Il y a aussi l’authentification qui permet la gestion des droits d’accès utilisateur. Et enfin la non-répudiation  dans le sens où chacun est responsable de ses actions et qu’aucun tiers ne doit être en mesure de s’en attribuer la paternité.

Partant de ce constat, il existe énormément de failles de sécurité. Ici nous nous focaliserons davantage sur le domaine du Web. Le but de cet article n’est pas d’en faire une liste exhaustive mais simplement de s’intéresser à une poignée d’entre elles en les définissant de façon générale et par l’exemple pour finir sur quelques bonnes pratiques Php à adopter.

* * *

jOOQ : Faire du SQL en JAVA

Le framework jOOQ (Java Object Oriented Querying) permet de réaliser simplement des requêtes SQL en JAVA, et supportant les principaux SGBD (Postgres, MySQL, Oracle, H2...)

jOOQ repose sur un système de génération de code afin de créer les classes correspondant aux tables présentes en base. Afin d'en bénéficier il suffit d'ajouter le plugin jooq-codegen dans le pom.xml et d’exécuter le goal maven generate-sources.

LINQPad (Partie 2)

logo

LINQPad

Dans l'article précédent, nous avons présenté ce que c'est LINQPad et montré à travers des exemples comment il peut nous être très utile pour le développement et le test des requêtes LINQ.

LINQPad est utilisé pour interroger les bases de données SQL pour MySQL, Oracle ou SQLite et d'autres sources de données telles que OData ou WCF Data Services en utilisant LINQ.

L'exemple suivant constitue la suite des exemples précédents.

LINQPad (Partie 1)

logo

LINQPad

 

Présentation

LINQPad est un outil de développement .NET pour exécuter et tester des requêtes LINQ avec les langages qui supportent LINQ à savoir SQL, VB 9, F# 1.1.8.1 ou C# 3. Il permet aussi d’interroger les bases de données en SQL et les sources de données comme OData ou les WCF data services.

Il existe aussi un forum d’utilisateurs de LINQPad http://forum.linqpad.net/

LINQPad existe en plusieurs versions disponibles sur ce lien https://www.linqpad.net/Purchase.aspx : Free, Pro, Developer et Premium. Dans l’ordre, chaque version offre plus de fonctionnalités que les précédentes . La version gratuite est basique et offre peu de fonctionnalités. Seule la version Premium offre un debugger avec la pile d'appels, threads, variables locales / fenêtres de surveillance et points d'arrêt. L’IntelliSense, elle, est disponible qu’à partir de la version Pro.

L’intérêt d'utiliser cet outil est de pouvoir tester et déboguer le code sans avoir besoin d'un IDE tel que Visual Studio.

Un framework qui se veut très efficace : CakePHP

Cake PHP est un framework qui permet de développer rapidement et simplement des applications PHP. CakePHP possède une architecture de type MVC avec des contraintes sur le nommage des classes et sur l'arborescence.
Cela permet à CakePHP de faire tous les liens entre les éléments sans avoir à les spécifier manuellement et à un développeur de rapidement prendre en main la suite des développements de l'application.
En effet, en suivant le MVC, une vue est associée à chaque action du contrôleur sur le modèle correspondant. CakePHP va directement rechercher les classes selon leur nom et retourner des erreurs ciblées si une classe est absente.

Performances SQL d’une application .NET, et contextes d’exécution

Vous avez une application .NET qui fonctionne en production sur un environnement avec une charge conséquente, et vous observez des problèmes de performance qui semblent “apparaître” à certains moments seulement. Par exemple, des procédures stockées qui semblent partir en vrille à l’exécution, mais seulement à certains moments.

Armé d’une version récente de SQL Management Studio, vous tentez de reproduire le problème, dans le but d’analyser le plan d’exécution. Et là, c’est la surprise totale! La requête qui s’exécute en plusieurs secondes, voire plusieurs minutes dans votre application s’exécute maintenant presque instantanément ! Et ce, alors que celle-ci peine lorsqu’appelée de l’application !
Et vous vous dites : Mais ça n’a pas de sens, pourquoi l’exécution est-elle si lente dans mon logiciel .NET et là c’est instantané, et ce au même moment, dans les mêmes conditions ? Eh bien, c’est tout simple, vous pourriez être l’une des nombreuses victimes de la différence de contexte entre toute application .NET et Management Studio ! Mais ne vous découragez pas, cet article vous expliquera le pourquoi de la chose !