Почему запись в буфер обмена в JS считается дырой в безопасности? - PullRequest
14 голосов
/ 15 августа 2011

Похоже, в настоящее время не существует чистого метода JavaScript для доступа к системному буферу обмена с использованием большинства современных браузеров, исключение составляет Internet Explorer. По многим другим вопросам переполнения стека (например, доступ к буферу обмена с использованием Javascript - без Flash? ) объясняется, что это ограничение является преднамеренной мерой безопасности для защиты веб-сайтов от чтения паролей или других конфиденциальных данных из буфера обмена.

Хотя кажется очевидным, что чтение из буфера обмена будет представлять огромную угрозу безопасности, мне не ясно, почему запись в буфер обмена будет. От какого сценария, если таковые имеются, защищают браузеры, отказывая JS в возможности копировать данные в буфер обмена?

Ответы [ 4 ]

16 голосов
/ 15 августа 2011

Запись в буфер обмена - это способ, с помощью которого вредоносные веб-сайты (или другой код, работающий на сайтах, например, реклама на основе флэш-памяти), могут заставить пользователей распространять вредоносное ПО. Это произошло несколько лет назад с рекламой на основе флеш-памяти, которая копировала URL-адрес вредоносного ПО в буфер обмена, в надежде, что пользователи вставят его, когда намереваются вставить что-то еще, загрязняя таким образом такие элементы, как посты в Facebook, форумы и электронная почта. Вместо ссылки на фотографию кошки тети Тилли вы должны вставить ссылку на вредоносное ПО. Как правило, это были «вы были заражены вирусом, заплатите нам 50 долларов за удаление программного обеспечения», поддельные антивирусные мошенничества. Я провел некоторое исследование по этому вопросу, так как многие из моих клиентов ClipMate спрашивали, почему эти неприятные URL-адреса внезапно появляются в ClipMate. Во время исследования меня атаковали рекламные ролики на MSNBC и DIGG. Буфер обмена был впоследствии заблокирован во Flash 10. Вы можете прочитать больше о моей саге здесь: http://www.clipboardextender.com/defective-apps/clipboard-virus-not-exactly-but-still-dangerous

Я ожидаю, что ограничение JavaScript должно предотвращать подобные вещи.

6 голосов
/ 15 августа 2011

Что если пользователь не хочет, чтобы его или ее буфер обмена перезаписывался?

3 голосов
/ 15 августа 2011

Если пользователь ожидает, что в его буфере обмена содержится одна вещь, но скрытно его заменяет другая вещь, даже если это потенциальная проблема безопасности, а не просто раздражение.

Хотя это маловероятный вектор атаки, не исключено, что можно придумать что-то, что предполагает социальную инженерию: убедить пользователя вставить скрытно измененную информацию в поле пароля на целевом ресурсе.Этот ресурс будет защищен паролем, известным злоумышленнику.

0 голосов
/ 03 февраля 2015

Помимо вышеупомянутых проблем с уязвимостью существует по крайней мере один сценарий, когда неправильная реализация API буфера обмена javascript может вызвать некоторые проблемы безопасности.

В настоящее время у нас есть новые API для установления соединения между отдельными окнами без вызова серверной стороны, например postMessage , MessageChannel или, скажем, BroadcastChannel , недавно представленный в Firefox.Эти API имеют разный уровень поддержки браузеров, но все они рассматривают проблемы с несколькими источниками.То есть, должно быть невозможно получить сообщение из окна на другом хосте, если это окно на самом деле явно не позволяет.

Это не относится к API буфера обмена.Представьте, что некоторый код на странице вставляет код в буфер обмена, и этот буфер обмена сканируется другим окном.Это очень странный и весьма гипотетический сценарий, зависящий от некоторых довольно странных и экзотических предположений, но о нем стоит упомянуть.

...