Учитывая следующее:
jQuery("#SomeTextbox").val("new value for SomeTextbox")
код jQuery для функции val
просто делает это:
this.value = "new value for SomeTextbox";
где this
- это ссылка на объект Text
в DOM, представляющий текстовое поле с идентификатором «SomeTextbox». Строка "new value for SomeTextbox"
сохраняется как свойство value
этого объекта DOM. Он не трансформируется и не дезинфицируется. Но он не анализируется и не интерпретируется движком JavaScript (например, как в случае InnerHTML
). Поэтому, независимо от того, что вы аргументируете val
, он ничего не «сделает». Он просто изменяет значение строкового свойства объекта в DOM. Так что да, это было бы безопасно.
EDIT:
Вот некоторая дополнительная информация, которая может оказаться вам полезной.
Как правило, помещение чего-либо в текстовое поле, независимо от того, насколько вредоносным оно может быть, и независимо от того, как оно туда попадает, является «безопасным», если оно остается в текстовом поле. Но куда это идет, очень важно.
Если содержимое текстового поля впоследствии отображается в потоке разобранного HTML, то оно больше не безопасно. Обычный сценарий - сохранить содержимое текстового поля в базе данных, затем извлечь его позже и отобразить в контексте, где браузер анализирует как HTML. Если повторное отображение происходит в контексте другого пользователя, это создает злоумышленнику возможность вводить данные в текстовое поле, чтобы в будущем получить доступ к личной информации других пользователей.