Passer les champs d'une base de donnée VARCHAR vers NVARCHAR

Dans le cadre d’un projet d’amélioration de la sécurité d’une application, j’ai du notamment passer l’ensemble des champs VARCHAR d’une base de donnée vers NVARCHAR. La raison est bien simple: protéger le contenu des injections XSS.

Il faut en outre que:

  • Le caractère  “>” devienne “>”
  • Le caractère “<” devienne “&lt;”
  • Le caractère  ” devienne &quot;

Pour ce faire, il suffit de générer une série d’instructions “ALTER TABLE” à partir de cette requête SQL:

SELECT 'ALTER TABLE ' + isnull(schema_name(syo.id), 'dbo') + '.[' +  syo.name +'] ' 
    + ' ALTER COLUMN [' + syc.name + '] NVARCHAR(' + case syc.length when -1 then 'MAX' 
        ELSE convert(nvarchar(10),syc.length) end + ') '+ 
        case  syc.isnullable when 1 then ' NULL' ELSE ' NOT NULL' END +';' 
   FROM sysobjects syo 
   JOIN syscolumns syc ON 
     syc.id = syo.id 
   JOIN systypes syt ON 
     syt.xtype = syc.xtype 
   WHERE 
     syt.name = 'varchar' 
    and syo.xtype='U'

Finalement, ce n’est qu’une partie des éléments à mettre en place pour sécuriser une application convenablement d’une possible faille XSS.

Gabriel Robert

Gabriel Robert
Développeur @spektrummedia / @snipcart / @userboat

xavtool - Xamarin Automating Version Tool

Ces temps-ci, je me retrouve à faire beaucoup de développement mobile. Évidemment, étant sous l'excellente plateforme [Xamarin](https://w...… Continuer à lire