Jam*_*mes 13 javascript arrays security xss
我刚读过这篇文章:http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx
如果你在创建/ 时选择使用构造函数,我的印象是覆盖Object或Array只有效果,但是,根据那篇文章,它也对文字创建有影响(和)......arraysobjects{}[]
我的逻辑:
Array = function(){ alert('Hi'); };
[1,2,3,4,5];
([1,2,3,4,5]);
var a = [1,2,3,4,5];
// ...
// ... Nothing is alerted
Run Code Online (Sandbox Code Playgroud)
那么,我是疯了还是有一些我不知道的特定于实现的怪癖?
EcmaScript 5草案标准化了Josef提到的这个修复.它根据11.1.4节中描述的创建上下文时Array全局值的值来指定数组构造函数的行为.
语义
生产
ArrayLiteral : [ Elisionopt ]评估如下:
- 令数组是创建一个新对象的结果,就好像表达式
new Array()whereArray是具有该名称的标准内置构造函数一样.
而不是允许替换Array构造函数的旧ES 262行为:
语义
生产
ArrayLiteral : [ Elisionopt ]评估如下:
- 像表达式一样创建一个新数组
new Array().
也就是说,不要依赖[]老年口译员的合理工作.