Как преобразовать строку в значение атрибута HTML, как интерпретируется браузером в C # - PullRequest
0 голосов
/ 08 октября 2018

Мне нужно проверить ввод пользователя для href на стороне сервера и убедиться, что в качестве протокола разрешены только http:// и https:// (если они вообще указаны). Цель состоит в том, чтобы устранить возможные вредоносные действия.код типа javascript:... или что-нибудь подобное.

Что затрудняет, так это количество способов, которыми двоеточие может быть закодировано в такой строке, например, :, &#58, :, &#x0003A, :.Я хотел бы преобразовать значение и увидеть его так, как это делают браузеры, прежде чем они отрисовывают страницу.

Одним из вариантов может быть создание документа DOM с использованием AngleSharp, поскольку он отлично справляется с работой при разборе атрибутов.Тогда я мог бы извлечь значение и проверить его, но кажется несколько излишним создание целого дерева DOM только для анализа одного значения.Есть ли способ использовать AngleSharp для анализа только значения атрибута?Или есть ли библиотека, которую я мог бы использовать только для этой задачи?

Я также нашел этот вопрос , но используемый там метод на самом деле не анализирует URI, как это делают браузеры.

1 Ответ

0 голосов
/ 08 октября 2018

Вы хотите метод HtmlDecode().Вам может понадобиться добавить ссылку на проект, чтобы использовать его.

...