Избегание XSS при отображении POSTed HTML - PullRequest
0 голосов
/ 08 сентября 2011

У меня есть веб-страница, на которой необходимо выполнить следующие действия:

  • динамически создать фрагмент HTML с помощью JavaScript
  • открыть новое окно
  • отобразить HTMLв новом окне

Мой первый подход использовал document.write для копирования HTML в окно.В большинстве случаев это работает, но вызывает проблемы с Internet Explorer, когда в исходном окне установлено значение document.domain.Плюс document.write, как правило, не рекомендуется в наши дни.

Итак, мой второй подход состоял в том, чтобы поместить HTML в скрытую форму , установить цель формы в новом окне и отправить форму,Это означает, что мне нужен сценарий на сервере для ответа на форму, повторяющий содержимое POST.

Но это опасно, поскольку кто-то может сделать запрос, включающий теги <script> в содержимое. Как я могу избежать потенциального риска XSS ?Я думаю, я мог бы отфильтровать такие вещи, как <script>, хотя это кажется неуклюжим.Если бы я создавал HTML на сервере, я мог бы зашифровать его или добавить какой-нибудь токен, который можно проверить только на сервере.Но я создаю его на клиенте.

РЕДАКТИРОВАТЬ: Спасибо за предложения фильтрации пока.Я могу пойти по этому пути, но мне интересно: а что, если я не хочу никаких ограничений на HTML, который я создаю?Можно ли проверить, что документ создан моей страницей?

Ответы [ 2 ]

0 голосов
/ 08 сентября 2011

Попробуйте PHPIDS .

PHPIDS (PHP-система обнаружения вторжений) - это простой в использовании, хорошо структурированный, быстрый и современный уровень безопасности дляваше веб-приложение на основе PHP.IDS не удаляет, не дезинфицирует и не фильтрует любой вредоносный ввод, он просто распознает, когда злоумышленник пытается взломать ваш сайт, и реагирует именно так, как вы этого хотите.На основе набора утвержденных и тщательно проверенных правил фильтрации любой атаке присваивается числовой рейтинг воздействия, который позволяет легко решить, какое действие следует предпринять после попытки взлома.Это может варьироваться от простой регистрации до отправки экстренной почты команде разработчиков, отображения предупреждающего сообщения для злоумышленника или даже завершения сеанса пользователя.

0 голосов
/ 08 сентября 2011

Попробуйте Очиститель HTML .

Edit:

«Есть ли способ проверить, что документ был создан моей страницей?»
Нет, если вы не создадите другую копию HTML-серверной части и сравните. Все в вашем скрипте может быть просмотрено пользователем, хотя это может затруднить работу нетехнических пользователей. Все, что может сделать Javascript на стороне клиента, может сделать злоумышленник на консоли Javascript.

Даже если вы каким-то образом подтвердили, что запрос поступил от вашего скрипта, злонамеренный пользователь может изменить ваш скрипт с помощью консоли Javascript, вставив строки кода, которые создают опасный запрос. Все данные GET и POST должны рассматриваться как вредоносные.

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