Вопрос

Я использую форматированный текстовый редактор на веб-странице.В .NET есть функция, которая запрещает размещать HTML-теги, поэтому я добавил фрагмент JavaScript, чтобы изменить угловые скобки на и псевдоним пары символов перед публикацией.Псевдоним заменяется на сервере необходимой угловой скобкой, а затем сохраняется в базе данных.Если оставить в стороне XSS, каковы распространенные способы решения этой проблемы?(т.е.Есть ли способ получше?)

Если у вас есть комментарии по XSS (межсайтовый скриптинг), я уверен, что это кому-нибудь поможет.

Это было полезно?

Решение

На самом деле есть способ отключить эту "функцию".Это позволит пользователю размещать любые символы, которые он захочет, и не будет необходимости преобразовывать символы в псевдоним с помощью Javascript.Смотрите эту статью подробнее отключение проверки запроса.Это означает, что вам придется провести свою собственную проверку, но, судя по звукам вашего поста, похоже, что это именно то, что вы хотите сделать в любом случае.Вы также можете отключить его на каждой странице, выполнив следующие действия инструкции здесь.

Другие советы

Я думаю, что самый безопасный способ - это НЕ разрешать пользователю создавать теги с помощью вашего WISYWIG.Может быть, используя что-то вроде редактора markdown, как на этом сайте, или доступно здесь. был бы другой подход.

Также сохраните директиву страницы ValidateRequest=true, которая должна остановить отправку разметки в запросе, вам, конечно, нужно будет обработать эту ошибку, когда она появится.Люди всегда смогут вставить теги в запрос в любом случае, используя расширения Firefox, такие как Несанкционированный доступ к данным, но ValidateRequest=true должен, по крайней мере, остановить ASP.NET их принятие.

Недавно Джефф опубликовал здесь прямой пост о XSS-атаках.Это также говорит о создании ваших файлов cookie HttpOnly, что является полузащитой от кражи файлов cookie.Удачи вам!

Моим первым комментарием было бы избегать использования JavaScript для изменения угловых скобок.Обойти это так же просто, как отключить JavaScript в браузере.Почти во всех серверных языках есть какой-либо служебный метод, который преобразует некоторые символы HTML в их аналоги сущностей.Например, PHP использует htmlentities(), и я уверен .В NET есть эквивалентный служебный метод.По крайней мере, вы можете выполнить замену регулярных выражений для угловых скобок, круглых скобок и двойных кавычек, и это значительно приблизит вас к безопасному решению.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top