Как показать содержимое, которое включает тег HTML? - PullRequest
0 голосов
/ 13 мая 2009

Я использую FckEditor на странице Create.aspx в приложении asp.net mvc.

Поскольку мне нужно отображать форматированный текст на веб-страницах, я использовал атрибут top of action атрибута ValidateInput (false) в классе контроллера.

И я использовал Html.Encode (Model.Message) в Details.aspx для защиты атаки пользователя.

Но у меня был результат, которого я не хотел:

<p> Hello </p>

Я хотел следующий результат не выше:

Hello

Как мне показать текст, который вводит пользователь?

Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 13 мая 2009

Вы можете использовать HttpServerUtility.HtmlEncode (String)

0 голосов
/ 13 мая 2009

Короткий ответ: HTMLEncode делает ваше шоу разметки таким. Если вы не HTMLEncode, он будет делать то, что вы хотите.

Вам нужно подумать о том, нужен ли вам полный контроль над разметкой, кто вводит разметку, и является ли альтернатива, такая как BBCode,

Если все ваши пользователи, пользующиеся редактором, обязательно являются «безопасными» пользователями, то XSS вряд ли станет для вас проблемой. Однако, если вы используете это в поле комментария, тогда BBCode, или что-то вроде SO, будет более подходящим.

Вы не сможете использовать редактор WYSIWYG и выполнять HTMLEncode ... (без BBCode или какой-либо другой системы токенов)

0 голосов
/ 13 мая 2009

Похоже, пользователь ввел "<p> Hello </p>" (из-за нажатия Enter?) В элемент управления редактирования, и он отображается правильно в HTML, как вы сделали Html.Encode. Например. параграфы не отображаются, они выводятся как "<p>..</p>", так как строка HTML закодирована в нечто вроде "&lt;p&gt; Hello &lt;p&gt;".

Если вам не нужны теги, я бы предложил поискать в текстовой строке теги (вещи с <...>) и удалить их из введенного текста. Сделайте это до HTML.Encode.

... или я что-то упустил?

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