Как кодировать ответ JSON / Ajax для XSS? - PullRequest
2 голосов
/ 25 января 2011

У меня есть веб-сайт ASP.NET MVC2, который активно использует Ajax и JSON для загрузки данных из базы данных и заполнения HTML. Я хотел бы иметь возможность кодировать объект JSON так, чтобы он отображал любой HTML как текст, а не как HTML. Я был удивлен, что не нашел много дискуссий / очевидных решений для этого, так как это кажется большой потенциальной проблемой XSS.

Я что-то пропускаю, и есть простой способ сделать это? Или мне нужно придумать собственное решение для этого? Если я сделаю это сам, я должен сделать это на модели, на контроллере или в jquery?

Ответы [ 2 ]

4 голосов
/ 25 января 2011

Для защиты от XSS кодируйте HTML, когда он выводится в представление.Данные должны оставаться необработанными (за исключением кодирования JSON, которое должно выполняться вашей библиотекой JSON автоматически) в JSON.

Если вы запрашиваете JSON с JavaScript, а затем вставляете часть этого в документ.Используйте document.createTextNode(String) для создания textNode из данных (который обрабатывает символы со специальным значением в HTML), затем вставьте этот textNode в документ.

1 голос
/ 25 января 2011

Коллега указал мне, что я использовал .html () для рендеринга данных JSON, когда мне следовало использовать .text (), что является неявным способом использования .createTextNode ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...