Единственный способ, которым это может быть потенциальной угрозой, - это если вы включаете сценарии, которые не находятся под вашим контролем из ненадежного источника.
- Вредоносный скрипт может перезаписать
alert
, чтобы стать другой функцией. Например, он может отправлять данные, переданные на alert
, на свои собственные серверы.
- Вредоносный скрипт может перезаписать значение
document.myform.field
объектом, содержащим свойство value
. Таким образом, alert
может отображать сообщение, похожее на другое сообщение об ошибке, например:
Ошибка аутентификации. Перейдите на сайт www.phisherman.com и введите свое имя пользователя и пароль.
Если вы ссылаетесь на скрипты из ненадежных источников, у вас намного больше проблем безопасности, чем указано выше.
Если вы ссылаетесь на такие ненадежные сценарии, то нет, это не уязвимо для XSS на основе DOM. form.field.value
содержит строку. Он не оценивается как сценарий, escape-символы не действуют, строка, содержащаяся в текстовом поле, будет отображаться в окне предупреждения. Ничто из того, что пользователь вводит в это поле, не может быть использовано для нанесения вреда вашим серверам или для повреждения ваших данных на основе опубликованного вами кода.
Я бы сказал, что если ваш аудитор имеет дело с «XSS на основе DOM», где пользователь может нанести вред вашим серверам, манипулируя DOM, ваш аудитор мало знает о DOM и JavaScript на основе браузера. Пользователь может взломать консоль JavaScript и выполнить всевозможные сценарии, включая запросы XMLHttp на ваш сервер, которые могут выглядеть так, как будто они получены из вашего собственного сценария. Для этих типов атак необходимо предпринять меры предосторожности на сервере. Бесполезно беспокоиться о рисках безопасности для DOM или пользовательского интерфейса из-за ввода пользователя в поля формы.