Безопасная new Function(str)
Здравствуйте.
Необходимо вычислить строку. Реализовал через new Function(str)
. Вопрос такой: с точки зрения безопасности, достаточно ли проверить регуляркой запуск метода (функции) и отсутствие операций присваивания?
var evalute = function (expr, context) {
expr = expr.replace(/\s+/g, '');
if (/[^^\+\-\*\/\<\>\=]\(|[^\<\>\!\=]\=[^\=]/.test(expr)) {
throw new Error('bad expression '+expr);
}
return (new Function('return ' + expr).bind(context))();
};
Источник: Stack Overflow на русском