Как веб-сайт предотвращает вставку пароля или адреса электронной почты?

481
user3.1415927

Я заметил, что некоторые сайты будут препятствовать тому, чтобы пользователи вставляли данные - от паролей до имен пользователей / электронных писем ко всему. Не обсуждая практику и рациональные / причины / против нее, каковы технические средства, с помощью которых веб-сайт мешает мне вставить данные в поле ввода текста?

Например, этот сайт не позволяет вставлять в поле «Введите адрес электронной почты». Как? Это мое предположение, что существуют различные способы реализации этого поведения?

Я использую Firefox 62.0.2 на OS X 10.11.6.

6
Как в сторону: это раздражает. Я написал тривиальный скрипт в AutoKey (Desktop Automation для Linux, но есть аналогичные утилиты для Windows и Mac), который просто печатает содержимое буфера обмена. Это проходит большинство, но не все такие сайты. Случайные пароли отлично подходят для безопасности, но ужасны при наборе. Joe 6 лет назад 0

2 ответа на вопрос

6
Kinnectus

Ответ: JavaScript

Посмотрите на исходный код страницы, на которую вы ссылаетесь.

<input type="text" size="30" maxlength="99" onkeydown="clearErrMsg(event)" onblur="validateEmail(false)" onpaste="SFDOMEvent.preventDefault(event);" id="fbclc_emailConf" name="fbclc_emailConf" value="" aria-required="true"> 

Он SFDOMEvent.preventDefault(event);связан с onpasteсобытием элемента ввода. preventDefaultпрервет действие, предотвращая поведение по умолчанию - вставку. Другие сайты будут использовать варианты этого.

4
harrymc

Отключить копирование, вырезание или вставку в поле HTML очень просто:

Пример, который отключает все:

<input type="text" onselectstart="return false" onpaste="return false;" onCopy="return false" onCut="return false" onDrag="return false" onDrop="return false" autocomplete=off/>

Для получения дополнительной информации см. Предотвращение копирования, вырезания и вставки в поля ввода текста HTML .