Подтвердить что ты не робот

Утилиты jQuery val() и prop() html-escape?

Я не могу найти что-либо в документации о val() и prop() и экранирование.

Они предназначены для того, чтобы избежать значений при использовании в качестве сеттеров?

4b9b3361

Ответ 1

Не совсем. .val() используется для установки атрибута поля формы value, поэтому экранирование там действительно не требуется. Вы будете устанавливать значение через DOM, поэтому вам не нравится, что вы создаете HTML через конкатенацию строк. .prop(), с другой стороны, даже не взаимодействует с атрибутами вообще - просто свойства DOM, поэтому вам не нужно работать с HTML, также выходящими из них.


Изменить: для разъяснения я предполагаю, что вы спрашиваете об этом, потому что вас беспокоит .prop() или .val() как вектор атаки XSS (или просто возможность застрелить себя в ноге )? В этом случае вы должны помнить, что при настройке атрибутов и свойств через DOM установленные вами значения по существу изолированы от атрибута или значения, с которым вы взаимодействовали. Например, учитывая следующее:

<div id="foo"></div>

И вы пытались злоупотреблять значением атрибута, например:

$('#foo').attr('rel', '"></div><script>alert("bang");</script><div rel="');

Вы можете быть обеспокоены тем, что это приведет к следующему:

<div id="foo" rel=""></div><script>alert("bang");</script><div rel=""></div>

Это никогда не произойдет. У вас действительно будет атрибут rel со злой строкой в ​​качестве значения, но не будет создана новая разметка или узлы DOM. Сама строка не экранирована - ее просто не интерпретируют как разметку. Это просто строка и что она.

Ответ 2

Они ожидают строки, а не HTML. Вам не нужно ничего скрывать.

Сами методы также не выполняют каких-либо экранов, основанные на них API DOM также используются в строках, а не в HTML.

Как только вы начинаете использовать JavaScript, вам почти не нужно беспокоиться о синтаксисе HTML, единственным исключением, о котором я могу думать, является использование свойства innerHTML, которое явно связано с (де) сериализацией DOM в HTML и из него.

Ответ 3

Я просто хочу добавить, что вам нужно беспокоиться при вставке значений внутри атрибутов с побочными эффектами, которые могут привести к выполнению кода. К ним относятся атрибут src изображения, который можно использовать для xss. См.: https://www.owasp.org/index.php/Script_in_IMG_tags