Хобрук: Ваш путь к мастерству в программировании

Рендеринг HTML-контента в JSF

У меня есть два поля: ввод и вывод. При вводе я пишу html-код, нажимаю кнопку и вижу отображаемый код в поле вывода.

   <h:form id="displayForm">
        <p:commandButton value="Execute" actionListener="#{screenController.executeCode}" update="displayForm:output"/>
        <h:inputTextarea value="#{screenModel.input}" rows="20" cols="165"/>
        <br/>
        <h:outputText id="output" value="#{screenModel.output}" escape="false"/>
    </h:form>

Но, когда я написал

<script>
document.write("1")
</script>

Отрисовалась вся страница. Я не знаю насчет java-скрипта совсем, но у меня есть идея. Я могу заменить документ на какой-то код, тогда рендеринг будет только на поле "выход". Как я могу это сделать?

15.11.2013

Ответы:


1

Распечатайте его на отдельной странице, которую вы отображаете через <iframe>.

Независимо от подхода, повторное отображение пользовательского ввода в виде неэкранированного HTML открывает зияющую дыру в XSS-атаке. на вашем сервере. Вы бы не хотели, чтобы конечные пользователи могли полностью бесконтрольно запускать JavaScript на вашем сервере. Удалите все потенциально вредоносные теги и атрибуты HTML, используя какой-нибудь очиститель HTML, например Jsoup.

15.11.2013
  • Да, но как установить значение для html-страницы iframe? 18.11.2013
  • Для этого вы можете использовать флеш-область или передать идентификатор в качестве параметра запроса. 18.11.2013
  • Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..