Межсайтовый скриптинг (XSS) с использованием дефиса - PullRequest
1 голос
/ 03 апреля 2019

Если я наберу это в консоли Chrome, я получу предупреждение:

'some string'-alert(1)-'another string'

Если я вместо этого наберу следующее, я получу Uncaught SyntaxError: Unexpected identifier:

'some string'alert(1)'another string'

Какое значение в дефисах дает возможность выполнить предупреждение?

Ответы [ 2 ]

3 голосов
/ 03 апреля 2019

Первый из них оценивается как: Строка .. минус .. результат вызова функции .. минус .. Строка .

Использование вычитания со строками приводит их к нумерации или NaN

Предупреждение срабатывает просто потому, что это функция. Возвращаемое значение не определено.

Таким образом, после срабатывания оповещения вы фактически получаете NaN - undefined - NaN, который возвращает NaN, то, что вы видите в консоли

2 голосов
/ 03 апреля 2019

Поскольку Javascript не является строго типизированным, вы можете (пытаться) вычесть строки. Из-за этого интерпретатор оценивает каждую часть выражения, одной из которых является alert. Это приводит к появлению всплывающего окна. Интерпретатор / компилятор не может скомпилировать второй из-за неправильного синтаксиса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...