Значения HtmlEncoding, которые уже являются HtmlEncoded - PullRequest
2 голосов
/ 01 февраля 2011

Недавно мы взяли на себя проект .NET и, посмотрев на базу данных, в некоторых столбцах имеем следующее:

1) Некоторые столбцы имеют такие значения, как " & etc etc

2) В некоторых есть теги <script>, а в других тегах, не закодированных в html

Эти данные отображаются по всему сайту. При тестировании HtmlEncoding для точки № 1 мы получаем следующее &quot; -> &amp;quot;

Очевидно, что мы хотим использовать htmlencode при отображении, поскольку точка 2 содержит JavaScript, который мы не хотим выполнять.

Есть ли способ использовать HtmlEncoded для значений, которые могут быть или не быть уже закодированы?

Ответы [ 2 ]

2 голосов
/ 01 февраля 2011

Есть ли способ использовать HtmlEncoded для значений, которые могут быть или не быть уже закодированы?

Нет, нет.

Я хотел бы предложить, чтобы вы написали быстрый скрипт, который проходит через базу данных и unencode уже закодированные данные. Затем используйте что-то вроде библиотеки Microsoft AntiXSS (учебное пособие здесь ), чтобы закодировать все выходные данные, прежде чем они попадут на веб-страницу. Помните, что хранить данные в незашифрованном виде - это нормально 1 , опасность заключается в том, что вы возвращаете их конечному пользователю.

Некоторые элементы управления уже кодируют выходные данные, используя функциональность кодирования, встроенную в .Net Framework - , которая не является пуленепробиваемой для XSS - вам просто нужно либо избегать использования этих элементов управления, либо просто не кодировать отображаемые ими данные. Существует вопрос ЧАВО, относящийся к элементам управления MS, которые кодируются внизу страницы для первой ссылки, которую вы должны прочитать. Кроме того, некоторые сторонние поставщики элементов управления кодируют выходные данные своих элементов управления, вы можете сделать себе одолжение, если протестируете их, чтобы убедиться, что они по-прежнему не подвержены XSS.

1 Не забудьте предпринять шаги для предотвращения SQL-инъекций хотя!

1 голос
/ 02 декабря 2012

Перед применением HtmlEncode ("myText") используйте HtmlDecode для ввода текста.

Таким образом, вы будете декодировать свою строку из:

& quot; & amp; и т. д. и т. д.

до

"и т. Д. И т. Д.

, а затем применить кодирование "с нуля".

...