Каждый раз, когда вы выводите текст на страницу HTML, вы должны закодировать его HTML. Если вы этого не сделаете, комментарии (и другие строки, подобные разметке) исчезнут, но у вас также будут большие дыры в безопасности межсайтовых сценариев, поскольку потенциально ненадежные стороны смогут вставить <script>
в ваш контекст безопасности.
(точнее aspx
В .NET метод HTML-кодирования вызывается, естественно, HTMLEncode
. Вы также можете использовать веб-элемент управления, который автоматически кодирует HTML-код, например Literal с literalmode encode .
но логика представления в HTML)
Не уверен, что вы подразумеваете под этим, но если вы используете innerHTML
для установки содержимого из скрипта, вам нужно написать свой собственный HTML-кодировщик, поскольку в JS нет встроенного:
// HTML-encode a string for use in text content or an attribute value delimited by
// double-quotes
//
function HTMLEncode(s) {
return s.replace(/&/g, '&').replace(/</g, '<').replace(/"/g, '"');
}
или, что потенциально лучше, использовать методы и свойства DOM для установки динамического содержимого, а не возиться со строками HTML. (Для настройки текстового содержимого используйте element.textContent=
, возвращаясь к element.innerText
для IE, который его не поддерживает.)