cellule de prison

Protèger les eval

Comment protéger les chaines de caractères dans un eval()

Date de publication : 2008-12-17

Cette fonction escapeEval permet de protéger les chaines que l'on injecte dans la fonction eval. Dans le cas de chaine provenant d'une source non sûre (utilisateur, url ...) cette fonction permet d'empêcher les erreurs javascript levée par des appels du genre :


eval(machainenonsur);

L'appel précédent sera remplacé par :


eval("'"+escapeEval(machainenonsur)+"'");

L'ajout des simples quotes autour de l'appel est OBLIGATOIRE pour permettre à la fonction de protéger correctement la chaine.

Le code de la fonction escapeEval :


/**
* @author Labsmedia
* @see http://www.labsmedia.com
* @licence GPL
**/
function escapeEval(string)
{
var str = string;
str = str.replace(/\\/g,'\\\\');
return str.replace(new RegExp('\'','g'),"\\'");
}

Cette fontion remplace les \ par des \\ et les ' par des \' pour garantir que la chaine va être correctement interprétée par eval.

Image : bradley james

 
 

b1n@sp1n