Eval против веб-консоли - PullRequest
       11

Eval против веб-консоли

0 голосов
/ 29 августа 2018

Я всегда слышу и читаю «Eval is evil», если вы оцениваете пользовательский код.

Но чем отличается ввод текста в веб-консоли? А какие есть альтернативы?

Я знаю, что в Интернете полно таких вопросов, как у меня. Но я не смог понять, что я читаю, извините. Было бы здорово, если бы вы могли мне помочь. Я помню, что читал что-то о областях видимости, поэтому eval () и веб-консоль имеют разные области действия? Если да, то почему это делает веб-консоль более безопасной?

Спасибо за ваш совет!
Дарт Мун

Изменить: Почему передача кода через веб-консоль / через Eval вообще опасно? Я хоть js будет выполняться на стороне клиента?

1 Ответ

0 голосов
/ 29 августа 2018

Также небезопасно выполнять код в ; и то, и другое может привести к атакам XSS.
В этом отношении веб-консоль столь же уязвима, как и eval'd-код.

Однако , они действительно имеют разные области действия.

eval() работает в глобальной или локальной области в зависимости от того, как она вызывается:

Если вы используете функцию eval косвенно, вызывая ее через ссылку, отличную от eval, начиная с ECMAScript 5, она работает в глобальной области, а не в локальной области. Это означает, например, что объявления функций создают глобальные функции, и что оцениваемый код не имеет доступа к локальным переменным в области, в которой он вызывается.

И веб-консоль выполняет код в области окна страницы.

Интересно отметить, что Browser Console имеет различную область действия для Web Console , работающую под браузером Chrome окно:

Аналогичным образом вы можете выполнять выражения JavaScript с помощью консоли браузера. Но пока веб-консоль выполняет код в области окна страницы, консоль браузера выполняет их в области окна браузера.

...