C # MVC Предотвращение межсайтового скриптинга (XSS) - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть сайт администратора в .Net (MVC), который предоставляет открытое поле, в котором мы дали пользователям возможность вводить форматированный текст, пользователь может оформлять текст, включая ссылки и т. Д. Та же функция, которую обеспечивает переполнение стека при отправке вопроса.

HTML-код, введенный в текстовое поле, кодируется в последующем вызове, & lt; для <, & gt; для> и так далее. но код JavaScript не является.

CheckLink [** checkcript **] (jaVasCriPt: eval (a t o b ('YWxlcnQoJ3Rlc3QzMzMnKQ =='))) ------ Я должен написать приведенный выше код, чтобы отобразить в комментариях .----------

Это создает предупреждение, кто-то может использовать его.

Существуют библиотеки, которые можно использовать для кодирования HTML, но мы не хотим представлять закодированный текст, поскольку мы хотим, чтобы ссылки отображались в открытом доступе. Поэтому, если я кодирую входящий запрос на сервере, используя библиотеку .Net XSS или Web.Security (getsafehtml или HttpUtility.encode), то кодируются ссылки и все остальное.

Разработка

1) Существует ли какая-либо библиотека, которая занесет в черный список функции javascript - jaVasCriPt: eval или закодирует их, оставив HTML как есть. Я хотел бы удалить код javascript или пометить его как проверяющий, но разрешить другие функции форматирования текста, которые я предоставил, без ущерба для безопасности.

=================

Я ищу любую библиотеку (в C #), которая может вызвать исключение, когда в опубликованных данных присутствует небезопасный JavaScript,

Спасибо за ваши ответы.

1 Ответ

0 голосов
/ 25 апреля 2019

Если пользователю нужно ввести html-разметку, я рекомендую вам использовать [AllowHtml] атрибут для модели.Если вы все еще получаете ошибку в вашем методе записи, вы можете использовать атрибут [ValidateInput(false)], но это не очень безопасный способ.Затем вы можете использовать Antixss library для его кодирования.Плюс всегда используйте AntiForgeryToken.

...