OWASP WebGoat:LAB Client Side Filtering

From aldeid
Jump to navigation Jump to search

LAB Client Side Filtering

Stage 1

Cet exercice a pour objectif de vous démontrer que le filtrage des données confidentielles ne doit jamais être effectué côté client (navigateur) mais au niveau serveur. En effet, dans le premier cas, il est aisé de récupérer les données auxquelles nous ne sommes pas censés avoir accès.

Pour résoudre cet exercice, il suffit d'utiliser WebScarab pour récupérer le salaire de "Neville" :

Stage 2

Cet exercice a pour objectif de développer un patch de sécurité pour corriger cette faille. Ainsi, un "manager" ne doit pouvoir accéder qu'à ses seuls employés.

Pour ce faire, il est nécessaire d'ajouter un filtre aux requêtes XPath.

# vim ~/WebGoat-5.2/tomcat/webapps/WebGoat/lessons/Ajax/clientSideFiltering.jsp
Remplacer :
   StringBuffer sb = new StringBuffer();
   sb.append("/Employees/Employee/UserID | ");
   sb.append("/Employees/Employee/FirstName | ");
   sb.append("/Employees/Employee/LastName | ");
   sb.append("/Employees/Employee/SSN | ");
   sb.append("/Employees/Employee/Salary ");
   String expression = sb.toString();
Par :
   StringBuffer sb = new StringBuffer();
   sb.append("/Employees/Employee[Managers/Manager/text() = " + userid + "]/UserID | ");
   sb.append("/Employees/Employee[Managers/Manager/text() = " + userid + "]/FirstName | ");
   sb.append("/Employees/Employee[Managers/Manager/text() = " + userid + "]/LastName | ");
   sb.append("/Employees/Employee[Managers/Manager/text() = " + userid + "]/SSN | ");
   sb.append("/Employees/Employee[Managers/Manager/text() = " + userid + "]/Salary ");
   String expression = sb.toString();

Effectuer à nouveau le test pour vérifier l'application de notre patch.