Что такое "массивы JSON верхнего уровня" и почему они представляют угрозу безопасности?
в видео ниже, на отметке времени 21: 40, ведущий Microsoft PDC говорит, что важно, чтобы все JSON были обернуты, чтобы это не был массив верхнего уровня:
https://channel9.msdn.com/Events/PDC/PDC09/FT12
каков риск распаковки массива верхнего уровня?
Как я должен проверить и посмотреть, если я уязвима? Я покупаю много компонентов у третьих сторон и имею внешних поставщиков, которые разрабатывают мой код.
2 ответа:
Это потому, что несколько лет назад Иеремия Гроссман нашел очень интересная уязвимость, которая влияет на gmail. Некоторые люди обратились к этой уязвимости с помощью невозможно разобрать хлама (техническое описание МР bobince на этой странице-это фантастика.)
причина, по которой Microsoft говорит об этом, заключается в том, что они еще не исправили свой браузер (пока). (Edit: последние версии Edge и IE 10/11 решили эту проблему.) Mozilla считает, что это уязвимость в спецификации json, и поэтому они исправили ее в Firefox 3. Для записи я полностью согласен с Mozilla, и его неудачно, но каждый разработчик веб-приложений должен будет защитить себя от этой очень неясной уязвимости.
Я думаю, это потому, что конструктор Array() может быть переопределен. Однако эта проблема не является уникальной для массивов.
Я думаю, что атаки (или один из возможных способов) что-то вроде этого:
function Array(n) { var self = this; setTimeout(function() { sendToEvilHackers(self); }, 10); return this; }
браузер (или некоторые браузеры) используют этот конструктор для
[n, n, n]
нотацию массива. Поэтому CSRF-атака может использовать ваш открытый сеанс с вашим банком, ударить по известному URL-адресу JSON с помощью<script>
тег, чтобы получить его, а затем бац вы принадлежите.