Как я могу избежать небезопасного eval в моей Политике безопасности контента - PullRequest
0 голосов
/ 01 сентября 2018

Я прочитал ответы о том, как исправить unsafe eval, необходимое в моей Политике безопасности контента из-за использования setTimeout с помощью анонимной функции.

Однако я использую скрипт, который содержит следующее: -

$ = function (a) {
return /^f/.test(typeof a) ? /in/.test(b.readyState) ? setTimeout('$('+a+')', 9) : a() : new i(a)
}

и я не могу на всю жизнь решить, как преобразовать его в скрипт, который использует анонимную функцию, или если есть способ переписать его.

Код является частью ki.js , если вам нужно увидеть больше кода.

Я пытался

return /^f/.test(typeof a) ? /in/.test(b.readyState) ? setTimeout(function(){'$('+a+')'}, 9) : a() : new i(a)

но это явно не сработало! Я думаю, что я просто лишен сна, но кто-то может направить меня в правильном направлении!

1 Ответ

0 голосов
/ 01 сентября 2018

Нет необходимости использовать строковую ссылку, если вы собираетесь использовать свою собственную анонимную функцию. Просто используйте обычный код внутри.

(Не уверен насчет политики безопасности контента, просто помогаю с синтаксисом. Если это не решит вопрос полностью, я удалю ответ и опубликую это как комментарий.)

$ = function (a) {
  return /^f/.test(typeof a) 
    ? /in/.test(b.readyState) 
      ? setTimeout(function() { $(a); }, 9) 
      : a() 
    : new i(a);
};
...