Проверка ввода при использовании редактора форматированного текста - PullRequest
0 голосов
/ 05 октября 2009

У меня есть приложение ASP.NET MVC, и я использую CKEditor для ввода текста. Я отключил проверку ввода, чтобы HTML-код, созданный из CKEditor, можно было передать в действие контроллера. Затем я показываю введенный HTML на веб-странице.

У меня есть только определенные кнопки на CKEditor, но, очевидно, кто-то может отправить любой текст, который он хочет вниз. Я хочу иметь возможность показывать HTML на странице после того, как пользователь ввел его. Как я могу проверить введенные данные, но при этом показать некоторые вещи, которые включены в редакторе?

Так что в основном я хочу очистить все, кроме нескольких ключевых вещей, таких как жирный шрифт, курсив, списки и ссылки. Это должно быть сделано на стороне сервера.

Ответы [ 3 ]

0 голосов
/ 06 октября 2009

Смотрите мой полный ответ здесь от аналогичного вопроса:

Я обнаружил, что заменить ангела скобки с закодированными ангельскими скобками решает большинство проблем

0 голосов
/ 06 октября 2009

Вы можете создать своего рода «белый список» для html-тегов, которые вы хотите разрешить. Вы можете начать с HTML-кодирования всего этого. Затем замените серию «разрешенных» последовательностей, например:

"&lt;strong&gt;" and "&lt;/strong&gt;" back to "<strong>" and "</strong>"
"&lt;em&gt;" and "&lt;/em&gt;" back to "<em>" and "</em>"
"&lt;li&gt;" and "&lt;/li&gt;" back to ... etc. etc.

Для таких вещей, как тег A, вы можете прибегнуть к регулярному выражению (так как вы хотите, чтобы атрибут href также был разрешен). Вы все еще хотите быть осторожным с XSS; кто-то уже рекомендовал AntiXSS.

Пример регулярного выражения для замены тегов A:

&lt;a href="([^"]+)"&gt;

Затем заменить на

<a href="$1">

Удачи!

0 голосов
/ 05 октября 2009

Как насчет AntiXSS ?

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