Недавно на Github появилась интересная демка, состоящая всего из всего одной страницы. Она показывает, как можно украсть данные пользователя, злоупотребляя возможностями браузера.
Схема работы очень проста — в Google Chrome существует возможность автоматически заполнить поля ввода, которая работает, даже если вы находитесь на сайте первый раз. Зайдя на сайт пользователь может захотеть заполнить автоматически видимые поля — например имя и электронный адрес. Однако, если владелец сайта разместит невидимые поля ввода, то они так же буду заполнены.
<p>
//Это поле пользователь видит
<input id="name" name="name" type="text" placeholder="Your Name">
</p>
<p>
//И это видит
<input id="email" name="email" type="email" placeholder="Your Email">
</p>
<p style="margin-left:-500px">
//А вот это уже не видит
<input id="phone" name="phone" type="text" placeholder="Your Phone">
</p>
<p>
//По нажатию этой кнопки будут отправлены все данные, включая телефон
<input type="submit" value="Submit">
</p>
Anttiviljami (пользователь Github, который выложил демонстрационную страничку) пишет и про взаимодействие других браузеров с такой страницей. Так, в Firefox необходимо заполнять все поля поотдельности, а Safari сперва покажет пользователю список данных, которые подставляются в формы. Сама страница с демонстрацией уязвимости доступна на Github Pages. После нажатия кнопки Submit вам будут показаны данные, которые были бы переданы владельцу сайта.
Эта возможность вызвала резонанс у пользователей reddit. Большинство сочло такое поведение браузера неочевидным и очень даже опасным. Пользователь с ником Terr_ пишет:
Даже если бы браузер проверял со 100% точностью, что форма ввода не скрыта/перекрыта другой формой/замаскирована, проблема бы не ушла. Атакующий всё ещё имеет возможность разместить небольшое поле ввода там, где какая-то часть пользователей его не заметит.
Я не понимаю — что должен делать пользователь, чтобы регулярно посещать незнакомые вебсайты и на всех заполнять множество форм с адресом, телефоном и электронной почтой? Зачем эта возможность вообще нужна?