使用连字符的跨站点脚本 (XSS)



如果我在Chrome的控制台中输入此内容,则会收到以下警报:

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

如果我输入以下内容,我会得到Uncaught SyntaxError: Unexpected identifier

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

使警报能够执行的连字符的意义是什么?

第一个计算为:字符串 .. 减去 ..函数调用的结果 .. 减号 ..字符串

对字符串使用减法可将它们转换为数字或NaN

警报触发仅仅是因为它是一个函数。它的返回值未定义。

因此,在警报触发后,您实际上NaN - undefined - NaN返回NaN这是您在控制台中看到的内容

因为Javascript不是强类型,所以你可以(尝试)减去字符串。因此,解释器正在评估表达式的每个部分,其中之一是alert.这会导致出现一个弹出窗口。由于语法不正确,解释器/编译器无法编译第二个。

最新更新