Я не могу найти что-либо в документации о val()
и prop()
и экранирование.
Они предназначены для того, чтобы избежать значений при использовании в качестве сеттеров?
Я не могу найти что-либо в документации о val()
и prop()
и экранирование.
Они предназначены для того, чтобы избежать значений при использовании в качестве сеттеров?
Не совсем. .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. Сама строка не экранирована - ее просто не интерпретируют как разметку. Это просто строка и что она.
Они ожидают строки, а не HTML. Вам не нужно ничего скрывать.
Сами методы также не выполняют каких-либо экранов, основанные на них API DOM также используются в строках, а не в HTML.
Как только вы начинаете использовать JavaScript, вам почти не нужно беспокоиться о синтаксисе HTML, единственным исключением, о котором я могу думать, является использование свойства innerHTML
, которое явно связано с (де) сериализацией DOM в HTML и из него.
Я просто хочу добавить, что вам нужно беспокоиться при вставке значений внутри атрибутов с побочными эффектами, которые могут привести к выполнению кода. К ним относятся атрибут src изображения, который можно использовать для xss. См.: https://www.owasp.org/index.php/Script_in_IMG_tags