Допустим, у меня есть простое приложение для ведения блога ASP.NET MVC, и я хочу разрешить читателям добавлять комментарии к сообщению в блоге. Если я хочу предотвратить любые типы XSS-махинаций, я мог бы HTML-кодировать все комментарии, чтобы они становились безопасными при рендеринге. Однако что, если бы мне понадобились некоторые базовые функции, такие как гиперссылки, выделение жирным шрифтом, курсив и т. Д.?
Я знаю, что StackOverflow использует WMD Markdown Editor, который кажется отличным выбором для того, что я пытаюсь выполнить, если бы не тот факт, что он поддерживает оба HTML и Markdown, который оставляет его открытым для XSS-атак.
7 ответов
Если вы не хотите использовать редактор, вы можете рассмотреть возможность использования OWASP AntiSamy.
Вы можете запустить пример здесь: http://www.antisamy.net/
Сколько HTML вы собираетесь поддерживать? Полужирным шрифтом / курсивом / основным шрифтом? В этом случае вы можете преобразовать их в синтаксис уценки, а затем удалить остальную часть HTML.
Разборку необходимо выполнить на стороне сервера, прежде чем вы ее сохраните. Вам также необходимо проверить ввод на сервере при проверке SQL-уязвимостей и других нежелательных вещей.
Если вам нужно сделать это в браузере: http://code.google. ru / p / google-caja / wiki / JsHtmlSanitizer
Я предлагаю вам использовать только синтаксис уценки. Во внешнем интерфейсе клиент может ввести уценку и иметь предварительный просмотр HTML (так же, как SO), но только на стороне сервера отправить синтаксис уценки. Затем вы можете проверить его, сгенерировать HTML, избежать его и сохранить.
Я считаю, что так поступает большинство из нас. В любом случае уценка предназначена для того, чтобы избавить кого-либо от написания структурированного HTML-кода и дать власть тем, кто даже не знает, как это сделать.
Если есть что-то конкретное, что вы хотите сделать с HTML, вы можете настроить его с помощью наследования CSS ».comment a {color: # F0F; } ', интерфейс JS или просто пройдитесь по сгенерированному HTML от разметки Markdown перед его сохранением.
Почему бы тебе не использовать код Джеффа? http://refactormycode.com/codes/333-sanitize-html
Я бы проголосовал за FCKEditor, но вам нужно сделать несколько дополнительные шаги к возвращаемому результату тоже.
Вы можете использовать белый список HTML, чтобы можно было использовать определенные теги, но все остальное было заблокировано.
Есть инструменты, которые могут сделать это за вас. SO использует код, который Связано с Slough.
Похожие вопросы
Связанные вопросы
Новые вопросы
asp.net
ASP.NET - это среда разработки веб-приложений Microsoft, которая позволяет программистам создавать динамические веб-сайты, веб-приложения и веб-службы. Полезно использовать этот тег в сочетании с тегом типа проекта, например, [asp.net-mvc], [asp.net-webforms] или [asp.net-web-api]. НЕ используйте этот тег для вопросов о ASP.NET Core - используйте вместо этого [asp.net-core].