Дополнительные переводы строк в текстовых областях / проблемы с Microsoft Edge или encodeForHTML (ColdFusion) - PullRequest
5 голосов
/ 31 мая 2019

Это странное явление, которое началось только в последние несколько месяцев, я бы сказал.Текстовые области в Microsoft Edge отображают только дополнительные разрывы строк при использовании ColdFusion's encodeForHTML().Как воспроизвести ...

<cfset x = chr(49)&chr(13)&chr(10)&chr(50)&chr(13)&chr(10)&chr(51)>
<cfoutput>
<textarea rows="10">#encodeForHTML(x)#</textarea>
</cfoutput>

В Edge это выглядит примерно так ...

enter image description here

Но во всех других браузерах(и даже в Edge вплоть до недавнего времени) это выглядит так ...

enter image description here

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

enter image description here

Поэтому я решил вывести ascii для всего ПОСЛЕ того, как он прошел encodeForHTML(), и эторезультат ...

49| = 1
38|35|120|100|59|38|35|120|97|59| = &#xd;&#xa;
50| = 2
38|35|120|100|59|38|35|120|97|59| = &#xd;&#xa;
51| = 3

Что я и ожидал.Несколько лет назад я разговаривал с одним из основателей проекта esapi, который encodeForHTML() использует, и он сказал, что он отключает разрывы страниц, чтобы предотвратить подделку журналов.Итак, поскольку это только недавно начало происходить в Edge, вы бы сказали, что это проблема с Edge, и он не может правильно обрабатывать &#xd;&#xa; в текстовой области?Или есть какой-то другой способ исправить это, который все еще будет безопасен от XSS?Спасибо!

Я также попытался просмотреть заметки о выпуске Microsoft Edge, но не смог найти ничего, связанного с этой проблемой.

...