Archives du blog
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.