HTML и JavaScript и Json = Как и когда кодировать в каком порядке? - PullRequest
0 голосов
/ 28 июня 2011

мой процесс выглядит следующим образом:

1.) Server: Encode the content as HTML (=using StringEscapeUtils from apache commons)
2.) Server: Encode the content as JavaScript (=using StringEscapeUtils from apache commons)

3.) Server: Marshall via Jackson JSON library 

4.) Transfer via JSON

5.) Client display via JQuery in the webpage (via the $ajax() call)

Корректен ли процесс выше?Сначала кодирование HTML, затем кодирование JavaScript?

Нужно ли JavaScript кодировать содержимое?Насколько я могу судить, Джексон будет правильно кодировать контент, а Jquery достаточно безопасен для анализа даже незащищенного контента JavaScript?Так что я могу отказаться от кодировки JavaScript, это правильно?

Большое спасибо!Markus

1 Ответ

1 голос
/ 29 июня 2011

Что ты встраиваешь?

Если вы встраиваете простой текст, встроенный в HTML, встроенный в JavaScript, например, document.write("your text here") тогда вам нужно кодировать HTML перед кодированием JS.

Если вы встраиваете простой текст, встроенный в JavaScript, встроенный в HTML, например, <button type=button onclick="alert('your text here')"> тогда вам нужно сделать это в обратном порядке.

Вы можете думать об этом как о типовой проблеме. У вас есть строка типа string<plain_text>, и когда вы делаете что-то вроде "<a ...>" + myPlainTextString + "</a>", вы пытаетесь добавить 3 строки из string<html>, и чтобы сделать это правильно, вам необходимо кодировать / привести строку простого текста к string<html> так что вы делаете "<a ...>" + htmlEncode(myPlainTextString + "</a>".

Таким образом, 3 слоя встраивания - это то же самое, что 3 слоя приведения типов. Теперь, если бы я только мог убедить разработчиков систем языковых типов встроить проверки для такого рода вещей:)

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