2014-12-30 3 views
0

Мы разрабатываем приложение, которое вводит пользователя как Html и отображает тот же Html как вывод на другой странице. И вход никогда не должен иметь никакого динамического поведения в нем, как теги скрипта.Должен ли я Html кодировать вход Html от пользователя?

We Html Кодировать значение в Javascript и сохранять закодированное значение в БД. We Html Декодирование сохраненного значения и рендеринг его на новой странице для получения ожидаемого результата (см. Пример ниже).

Из того, что я до сих пор читал, должен был Html кодировать входные данные, прежде чем рендерить его как вывод на другой странице. Проблема я столкнулся в том, что независимо от Html добавленные пользователем, отображается то же самое в новой странице

Пример:

Ввод данных пользователем:

<div><h2>Header</h2><p>this is the body text</p></div> 

Выход в новой страницы при кодировании Html и присвоении ее другому div:

<div><h2>Header</h2><p>this is the body text</p></div> 

Ожидаемые:

Header 
    this is the body text 

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

Я что-то упустил, я пробовал все способы, которыми я знаю Html Кодирование ввода пользователя и его возврат не дает ожидаемого результата. Любая идея о том, как достичь этого?

Если нет другого решения, существует ли какая-либо система проверки в .net, чтобы избежать атак XSS. Я прошел через систему AntiXSS от microsoft, они больше для удаления любых вредоносных html и кодирования. Они не помогают сообщить пользователю, что они не должны вводить некоторые теги.

Благодарим за любую помощь заранее.

ответ

0

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

Причина, по которой существует рекомендация по кодированию перед отображением, заключается в том, что предполагается, что пользовательский ввод будет текстовым, рекомендуется кодировать для общего отображения (так, чтобы амперсанд фактически отображался как &), а также для предотвращения потенциально вредоносного ввода от отображения на странице и интерпретации браузером (например, <script> тегов).

Будьте осторожны: Если вы собираетесь отображать HTML-код, предоставленный пользователем, который вы пытаетесь максимально очистить входные данные - убедитесь, что они не пытаются сделать что-либо злонамеренное, а также убедитесь, что они не делают простой ошибки, которая может повредить весь макет веб-страницы (например, иметь открывающий тег без закрывающего тега). Этот тип санитарии не является простой задачей и одним из основных факторов, по которым в первую очередь существуют другие вкусы разметки (например, Mark Down, BBCode и т. Д.).

+0

Есть ли смысл сохранять кодированные значения, а затем декодировать их снова для вывода? – user3865301

+0

Мое предпочтение заключается в том, чтобы не кодировать, прежде чем я буду хранить в базе данных, потому что по дороге вы можете показать его в формате * other *, чем HTML. –

 Смежные вопросы

  • Нет связанных вопросов^_^