Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Javascript中的Symbol.isConcatSpreadable是不可写的?_Javascript_Security_Properties - Fatal编程技术网

为什么Javascript中的Symbol.isConcatSpreadable是不可写的?

为什么Javascript中的Symbol.isConcatSpreadable是不可写的?,javascript,security,properties,Javascript,Security,Properties,可在以下文档中找到: Writable: no Enumerable: no Configurable: no 但我可以改变它的价值: var a = [1, 2, 3]; undefined a[Symbol.isConcatSpreadable]=false; false [4, 5, 6].concat(a); (4) [4, 5, 6, Array(3)] 看起来您正在更改数组的值实际上,a。。。然而,Symbol.isConcatSpreadable未被更改。它的数据类型很可能是

可在以下文档中找到:

Writable: no
Enumerable: no
Configurable: no
但我可以改变它的价值:

var a = [1, 2, 3];
undefined
a[Symbol.isConcatSpreadable]=false;
false
[4, 5, 6].concat(a);
(4) [4, 5, 6, Array(3)]


看起来您正在更改数组的值实际上,
a
。。。然而,
Symbol.isConcatSpreadable
未被更改。它的数据类型很可能是布尔型的,因为
的命名约定是
,如果您在代码中这样做的话,布尔型可以是数组的索引。当然,您不能设置Symbol对象的“isConcatSpreadable”属性。但是,数组实例不包含
Symbol.isConcatSpreadable
的属性描述符,因此可以使用该键创建属性
Object.getOwnPropertyDescriptor([],Symbol.isConcatSpreadable)//未定义的原因:您为什么要更改它?@jonaswillms我正在处理chromium v8重新定义错误,这里是poc:``函数gcc(){var l=[];for(var I=0;I<0x1c000;I++){l.push(new Set();}var arr=Array(2);gc();gc();arr.concat({get[Symbol.isConcatSpreadable](){arr.shift();gcc();}}});`这是一个重新定义错误,攻击者可以重新定义isConcatSpreadable符号,并导致一些安全问题。我很好奇为什么不应该重新定义它。poc应该显示什么?看起来你正在更改数组的值实际上,你的
a
。。。然而,
Symbol.isConcatSpreadable
未被更改。它的数据类型很可能是布尔型的,因为
的命名约定是
,如果您在代码中这样做的话,布尔型可以是数组的索引。当然,您不能设置Symbol对象的“isConcatSpreadable”属性。但是,数组实例不包含
Symbol.isConcatSpreadable
的属性描述符,因此可以使用该键创建属性
Object.getOwnPropertyDescriptor([],Symbol.isConcatSpreadable)//未定义的原因:您为什么要更改它?@jonaswillms我正在处理chromium v8重新定义错误,这里是poc:``函数gcc(){var l=[];for(var I=0;I<0x1c000;I++){l.push(new Set();}var arr=Array(2);gc();gc();arr.concat({get[Symbol.isConcatSpreadable](){arr.shift();gcc();}}});`这是一个重新定义错误,攻击者可以重新定义isConcatSpreadable符号,并导致一些安全问题。我很好奇为什么它不应该被重新定义。那个poc应该显示什么?