Разница в выводе HTML из ‹c:out escapeXml=false› и скриптлета

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

<c:out value="${record.fname}" escapeXml="false" />

Затем я должен включить escapeXml="false" в свой код, чтобы специальные символы отображались в окне моего браузера. Но когда я удаляю его, он просто показывает мне HTML-код для этого. Но когда я показываю свою запись с помощью скриптлета следующим образом:

<%= record.getFname() %>

Он автоматически показывает только специальные символы вместо отображения HTML-кодов для этого.

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


person MN Mohal    schedule 29.07.2015    source источник


Ответы (2)


c:out имеет escapeXml, установленный по умолчанию на true, одна из целей этого — избежать межсайтового скриптинга, например, предотвратить выполнение script или любых других тегов html и вместо этого отображать их в виде текста. Можно сказать, что это дополнительная функция JSTL. Если вы хотите отображать вывод c:out как обычный HTML-контент, вы должны явно установить для escapeXml значение false. Но <%= record.getFname() %> это эквивалентно простому out.println, у которого нет этой возможности экранировать теги Html.

person Amit.rk3    schedule 29.07.2015
comment
Спасибо за ваш ответ. но, сэр, когда я использую ‹%= %› в теге ‹a›, то есть когда я использую переписывание URL-адреса, то в то время, когда я использую этот способ передачи моего значения на другую страницу, он дает мне только строку перед одинарной кавычкой, но когда я получаю значение с помощью этого метода из базы данных и отображаю его на своей веб-странице, он показывает точную строку. Но когда я использую тег jstl для передачи доли, он отправляет точную строку - person MN Mohal; 31.07.2015

Установите для атрибута escapeXML значение false только при доступе к внутренним параметрам, а не к параметрам или атрибутам, указанным в URL-адресе. Страницы подвержены атаке XSS при использовании неэкранированных параметров URL.

person Praveen Jayapal    schedule 07.01.2020