Introduction
On entend souvent parler (en particulier dans mes cours…) des injections de SQL, je vais montrer ici que l'on a les mêmes risques de sécurité avec le langage MDX qui est aux cubes ce que SQL est aux bases relationnelles.
Cas de la démonstration :
Je vais faire un rapport sur le chiffre d'affaires par pays, l'objectif étant que l'utilisateur saisisse le pays.
Voici la requête de base :
Cette requête est celle qui a été générée par l'assistant.
En fonctionnement :
Ok : on récupère la France…
Un peu de MDX :
Oups ! On récupère les parents de la France , à savoir tous les pays…
Que faire ?
Ne pas laisser l'utilisateur saisir de valeur et l'obliger à choisir une valeur dans une liste combo : ce choix est acceptable si cette liste ne contient pas trop de valeurs !!!
Il faut enlever le membre [All] de la liste des valeurs possibles :
Et filtrer sur les pays souhaités, dans cet exemple, la France et l'Allemagne :
L'utilisateur ne peut plus saisir de MDX et doit choisir entre la France et l'Allemagne.
Conclusion :
On voit assez rapidement que les assistants sont vite dépassés dès qu'il s'agit de faire du travail professionnel (gestion du volume, gestion de la sécurité). Ce qui fait que le langage MDX devient vite incontournable.
Si cela vous intéresse (et que vous êtes en entreprise) j'ai développé un cours de 1 journée pour apprendre les fondamentaux de ce langage.