У меня есть ситуация: У меня есть страница, которая использует <c:out>
для отображения данных из базы данных, в которой содержание имеет некоторые специальные символы в качестве зарегистрированного товарного знака. Я использую java, jsp, jstl в своем коде. зарегистрированный символ торговой марки отображается как:Ошибка XSS: как предотвратить это?
®
импортирует точно идеально, как:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
Если я печатаю, используя приведенный ниже код, он отображает правильный знак регистрации, но вещь заключается в том, что это приводит к нарушению безопасности.
<c:out escapeXml="false" value="${prName}"/>
Я использую Veracode сканировать мой код, так как я дал здесь: escapeXml="false"
, Veracode указывает на то, что это уязвимость.
Так что, когда я удалить escapeXml, он показывает, как это так:
<span class="sup">®</span>
Просьба предложить мне выход из этой проблемы? Любая помощь глубоко ценится.
БД поддерживается сторонним поставщиком и не под моим контролем, поэтому не может изменить значение БД. Я должен показать товарный знак на странице после того, как я извлечу его из БД. БД содержит значения XML, если они не экранированы, фактическое значение не печатается на странице. В этом ключе, как я могу дезинфицировать значение, которое я получаю из БД? –
Вы должны использовать некоторую библиотеку, такую как [ESAPI] (https://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API) для дезинфекции ввода. Также обратите внимание, что извлечение данных из базы данных, которая не находится под вашим контролем, также поступает из внешнего источника. –
Хорошо, лемме. –