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 !

Développer en .NET/SQLServer à distance à l’aide de tunnels SSH

Je travaille actuellement à distance sur de nombreux projets développés en .Net couplés à la technologie SQL Server comme moteur de Base de données. La problématique que j’ai rencontrée a été de pouvoir me connecter aux différentes ressources nécessaires au bon fonctionnement d’une application .NET (SQL Server, Reporting Services etc …) mais aussi au processus livraison sur un serveur distant (Prise en main à distance d’un Windows Server)

Pour répondre à cette problématique j’ai utilisé le tunneling SSH pour pouvoir me connecter à ces différentes ressources à distance. Dans un premier temps nous verrons comment créer un tunnel SSH à l’aide du logiciel Putty et de son interface graphique puis avec l’outil Plink utilisé en CLI (Command Line Interface).

Ensuite nous verrons comment nous connecter à ces différentes ressources dans un environnement de développement.

TechEvening à Lyon sur la sécurité des applications Web

Ce lundi s’est déroulé à Lyon un TechEvening consacré à la sécurité des applications Web. Nous avons testé les différentes techniques et outils utilisés par les utilisateurs malveillants. Deux applications ont été utilisées, l’une en J2EE pour la plupart des techniques (WebGoat 5.3 de la fondation OWASP) et l’autre en ASP.NET MVC 3 pour un focus sur les perfides attaques CSRF.

Au programme:

  • Injection: diverses techniques d’injection SQL;
  • Cross-Site Scripting (XSS): techniques de phishing et de « session hijacking »;
  • Violation de gestion d’authentification et de session: technique de « session fixation »;
  • Références directes non sécurisées: techniques d' »AC Bypass » aux niveaux données et métier;
  • Cross-Site Request Forgery (CSRF): technique du « Token Bypass »;
  • Mauvaise configuration de sécurité: technique de « Malicious File Execution »;
  • Stockage cryptographique non sécurisé: sensibilisation au « hashing » et « salting »;
  • Manque de restriction URL: technique du « forced browsing »;
  • Protection insuffisante de la couche transport: « sniffing », « ARP spoofing » et « ARP poisoning »
  • Redirections et renvois non validés: techniques du « HTTP splitting » et du « cache poisoning »

Nous avons utilisé les outils suivants:

  • Firefox
  • Fiddler
  • Firebug
  • TamperData
  • WireShark

Vous pouvez retrouver ci-après tous les supports:

  • L’application WebGoat 5.3;
  • L’application CSRFDemo ASP.NET MVC 3;
  • Les slides (PPTX ou PDF) de présentation;
  • Quelques fichiers utilisés pour les attaques;

Pour ceux qui s’intéressent plus globalement à la sécurité des applications .NET (pas qu’en Web), je vous invite à lire l’article suivant sur l’altération des assemblages, l’injection de code et la suppression des signatures cryptographiques. Une vidéo est également disponible.