фильтрация пропущенных угловых скобок в javascript - PullRequest
2 голосов
/ 18 октября 2011

У меня есть функция JavaScript, которая позволяет пользователям размещать произвольные текстовые строки на странице. Я не хочу, чтобы они могли вставлять HTML или другой код, просто текст.

Итак, я полагаю, что снятие всех угловых скобок (< >) поможет. (Мне все равно, есть ли у них «разбитый» html на странице или что они не могут вставить угловые скобки в текст) и, вероятно, другие.

Что все, что мне нужно отфильтровать для безопасности? Удастся ли снять все угловые скобки?

Ответы [ 2 ]

3 голосов
/ 18 октября 2011

Удастся ли снять все угловые кронштейны?

Просто замените все угловые кронштейны на их экранированные формы.Таким образом, люди могут написать столько «кода», сколько захотят, и вместо этого он будет отображаться в виде простого текста.

2 голосов
/ 18 октября 2011

Убедитесь, что первое, что вы делаете, это замените & на &amp;

a) Для содержимого HTML достаточно просто <.

b) Для атрибутазначения, например, если оно входит в <input name="sendtoserver" value="custom text"/>, вам нужно позаботиться о двойных кавычках, но это все, что необходимо.Тем не менее, это также хорошо сделать < и >.

Это зависит от контекста.Если вы хотите, чтобы это было безопасно, скажите вашему JavaScript использовать innerText, который не требует кодирования, но вы можете установить css на white-space:pre-wrap.Это менее подвержено ошибкам, но также менее совместимо с браузером.

c) На слабо связанной ноте при экранировании ограничителей строк JavaScript с помощью обратной косой черты, элемент, который может подкрасться к вам, - это если вы поместите контент всценарий, вам нужно позаботиться о </script> (без учета регистра). Вы можете просто экранировать </ или / должно быть достаточно

...