Sécurité : Cross-site scripting

Aujourd’hui parlont de sécurité.

Qu’est-ce que le cross-site scripting ? définition de Wikipédia XSS.

Pour protéger correctement une application il y a plusieurs choses à faire. Je vous propose de voir ce qui est important de réaliser sur coldfusion ainsi que sur l’application.

Coté serveur
– Il faut activer l’option « Enable Global Script Protection » qui se trouve dans Server settings/settings. Cette option ce base sur un fichier de configuration qui se trouve dans \Coldfusion9\lib. Il faut donc modifier le fichier neo-security.xml en lui ajoutant iframe dans la liste des noms à valider ce qui aura pour effet de remplacer le tag interdit par InvalidTag

<var name='CrossSiteScriptPatterns'>
<struct type='coldfusion.server.ConfigMap'>
<var name='<\s*(object|embed|script|applet|meta|iframe)'>
<string>
<InvalidTag>
</string>
</var>
</struct>
</var>

Coté application
Au niveau de l’application il faut ajouter une petite ligne dans application.cfc :

<script>
this.scriptprotect="all";
</script>

Maintenant il reste à mettre en place une API qui permet d’encoder toutes les infos envoyées par l’utilisateur. pour ce faire il y a plusieurs étapes à suivre pour installer cette API et pour pouvoir l’utiliser.

  • Télécharger l’API à cette adresse : ESAPI 2.0.1
  • Copier le fichier esapi-2.0.1.jar du fichier zip téléchargé dans le répertoire /wwwroot/WEB-INF/lib
  • Télécharger un bon fichier de propriété ESAPI.properties vérifier que les répertoires mappé dans ce fichier pointe bien sur des répertoires existant
  • Modifier les deux paramètres suivant dans le fichier de properties avec des données plus facile à gérer pour vous puis sauvegarder ce fichier dans un répertoire (ex: c:\esapi\config)
  • Encryptor.MasterKey=placer votre clef ici
  • Encryptor.MasterSalt=placer votre clef salt ici
  • Vous devez modifier la configuration de démarrage de la JVM en ajoutant « -Dorg.owasp.esapi.resources=c:\esapi\config »
  • Ajouter dans le classpath de la JVM l’emplacement du fichier.

Voila vous pouvez redémarrer Coldfusion.

Maintenant comment faire pour utiliser cette API ? Très facile.

<cfset ojbEsapi = CreateObject("java","org.owasp.esapi.ESAPI")>
<cfset encoder = ojbEsapi.encoder()>

<form action="#cgi.script_name#" method="post">
txt: <input type="text" name="txt" id="txt">
<input name="btnsub" type="submit">
</form>

<cfif structkeyexist(form,"fieldnames")>
<cfoutput>
#encoder.encodeForHTML(form.txt)#
</cfoutput>

Voila j’espère que cette aide vous aura été utile autant que la recherche d’info l’a été pour moi.

Référence:
securing coldfusion applications vous trouverez d’autres trucs dans cette vidéo.

Publicités

Publié le 8 août 2012, dans Coldfusion, sécurité, XSS, et tagué , , , . Bookmarquez ce permalien. Poster un commentaire.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :