Действительно ли это возможно к ответам использования XSS JSON с надлежащим строковым выходом JavaScript

Ответы JSON могут быть использованы путем переопределения Конструкторов Array или если враждебными значениями не является оставленный из строки JavaScript.

Давайте предположим, что оба из тех векторов обращены нормальным способом. Google заметно захватывает ответ JSON прямое определение источника путем добавления префикса всего JSON что-то как:

throw 1; < don't be evil' >

И затем остальная часть JSON следует. Таким образом, Dr. Evil не может, с помощью вида использования, обсужденного здесь, http://sla.ckers.org/forum/read.php?2,25788 получает cookie (предполагающий, что Вы зарегистрированы) путем помещения следования его сайта:

"}

Я прав или являюсь мной неправильно?

39
задан josh3736 29 March 2012 в 00:03
поделиться

1 ответ

Этой потенциальной xss-уязвимости можно избежать, используя правильный Content-Type . В соответствии с RFC-4627 все ответы JSON должны использовать тип application / json . Следующий код не уязвим для xss, продолжайте тестировать:

<?php
header('Content-type: application/json'); 
header("x-content-type-options: nosniff");
print $_GET['json'];
?>

Заголовок nosniff используется для отключения анализа содержимого в старых версиях Internet Explorer. Другой вариант заключается в следующем:

<?php
header("Content-Type: application/json");
header("x-content-type-options: nosniff");
print('{"someKey":"<body onload=alert(\'alert(/ThisIsNotXSS/)\')>"}');
?>

когда вышеуказанный код просматривается браузером, пользователю предлагается загрузить файл JSON, JavaScript не выполнялся в современных версиях Chrome, FireFox и Internet Explorer. Это было бы нарушением RFC.

Если вы используете JavaScript для eval () приведенного выше JSON или записываете ответ на страницу, тогда он становится XSS на основе DOM . XSS на основе DOM исправляется на клиенте путем очистки JSON перед обработкой этих данных.

28
ответ дан 27 November 2019 в 02:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: