Formation PUB770 : ASP.NET WebForms, H-2015 Les requêtes avec paramètres

26.1 Les paramètres pour se protéger contre les données malveillantes


ASP.NET met en place plusieurs protections afin de protéger le site Web contre les utilisateurs malveillants. Par exemple, lors de l'entrée de texte dans un formulaire, il est impossible d'entrer des balises HTML, à moins que le programmeur n'en donne spécifiquement l'autorisation.

Malgré cela, il faut prendre certaines précautions lorsqu'on utilise les données entrées par un internaute pour effectuer une requête SQL.

Voici un exemple concret :

Soit la requête suivante :

Fichier .aspx.cs (ASP.NET avec C#)

requete = "SELECT usager_prenom, usager_nomfamille, usager_motpasse FROM usager 

           WHERE usager_login = '" + login + "' AND usager_motpasse = '" + motpasse + "'";

Une requête montée à l'aide d'une concaténation de ce genre peut ouvrir des portes aux utilisateurs malveillants.

Si on permet à l'internaute d'entrer un code d'usager du genre « ' UNION SELECT 'monprenom','monnom','abc' -- », on obtiendra la requête suivante :

MS SQL

SELECT usager_prenom, usager_nomfamille, usager_motpasse 

FROM usager 

WHERE usager_login = '' UNION SELECT 'monprenom','monnom','abc' --' AND usager_motpasse = '...';

N'importe qui pourrait donc être authentifié sans connaître le mot de passe.

Pour se protéger de ce type d'injection, on pourrait échapper par programmation des apostrophes afin qu'ils ne soient pas interprétés par le serveur SQL.

Mais pour être plus efficace, on fera appel aux mécanismes prévus par ASP.NET. Ainsi, on évitera l'utilisation de requêtes SQL contenant des paramètres entrés « à bras » à l'aide d'une concaténation.

On utilisera TOUJOURS le mécanisme des paramètres prévu dans la classe SqlDataSource. Les requêtes ne contiendront donc JAMAIS de concaténation avec des variables.

▼Publicité Le texte se poursuit plus bas

Pour plus d'information

« How To: Protect From Injection Attacks in ASP.NET ». MSDN. http://msdn.microsoft.com/en-us/library/ff647397.aspx

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Par Christiane Lagacé
Dernière révision le 18 août 2017
Merci de partager !

Site fièrement hébergé chez A2 Hosting.

Soumettre