我尝试过执行Google gruyeres XSS挑战(http://google-gruyere.appspot.com/part2,并且在存储的AJAX XSS挑战中,他们具有JSON响应的以下代码部分:
all <span style=display:none>"
+ (alert(1),"")
+ "</span>your base
有趣的部分是:(alert(1),"")
根据提供的解决方案,将返回空字符串。根据我的测试,alert(1)仍然被执行。
这是某种函数的缩写,还是在JS中称为什么?为什么执行警报,然后返回空字符串?
非常感谢您的帮助!
最好的问候,罗尔夫
这是comma operator。代码执行alert(1)
,丢弃其返回值,然后求值""
,该值在JavaScript中为falsy。由于这是表达式中的最后一项,因此将返回其值。
我链接的教程描述如下:
JavaScript中的逗号运算符将评估其每个操作数。它返回最后一个操作数的值。使用逗号运算符添加多个表达式。