Перейти к содержимому

HTML-тег <keygen>

Тег <keygen> является одним из элементов HTML5. Он отвечает за генерацию пары ключей (открытого и закрытого), используемых для шифрования и расшифровки данных, отправляемых на сервер при отправке HTML-формы. Открытый ключ отправляется на сервер вместе с данными формы, тогда как закрытый ключ никогда не покидает устройство пользователя и управляется браузером или системным хранилищем ключей.

Его основной целью было шифрование форм и аутентификация, а не цифровые подписи.

Элемент <keygen> позволяет пользователю выбрать из ряда вариантов размера ключа и указать место его генерации, например, на смарт-карте или в программном обеспечении, хранящемся на диске. Эта функциональность работает как с криптографическим аппаратным обеспечением, так и со стандартной программной генерацией ключей.

Синтаксис

Тег <keygen> размещается в контейнере <form>; закрывающий тег не требуется. Однако в XHTML тег <keygen> должен быть самозакрывающимся (<keygen />).

Пример использования HTML-тега <keygen>:

HTML-тег <keygen>

html
<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <form action="/form/submit" method="post">
      <keygen name="rsaPublicKey" keytype="rsa">
      User’s name:
      <input type="text" name="usr_name" />
      <input type="submit" />
    </form>
  </body>
</html>

Результат

keygen tag example

Поддержка браузерами

  • Chrome, Edge, Firefox, Safari, Opera: Устарел и удалён. Все основные браузеры прекратили поддержку <keygen> в 2021 году из-за проблем с безопасностью и удобством использования.
  • Мобильные браузеры: Не поддерживается.

DANGER

Обратите внимание, что тег '<keygen>' устарел в HTML5 и не должен использоваться. Вместо этого рекомендуется применять другие методы аутентификации, такие как OAuth или OpenID.

Атрибуты

АтрибутЗначениеОписание
autofocusautofocusОпределяет, что элемент автоматически получает фокус при загрузке страницы. Не поддерживается в IE и Firefox.
challengestringОпределяет строку вызова, передаваемую вместе с открытым ключом. По умолчанию пустая строка, если не указано иное.
disableddisabledУказывает, что элемент <keygen> должен быть отключён.
formform_idСвязывает элемент с конкретной формой по ID. Не поддерживается в IE.
keytypersa, dsa, ecОпределяет алгоритм шифрования ключа. rsa — единственное официально стандартизированное значение. dsa и ec никогда не стандартизировались и имели непоследовательную поддержку в браузерах. rsa (по умолчанию) обеспечивает высокую/среднюю безопасность. dsa позволяет выбирать размер ключа. ec обеспечивает высокую/среднюю безопасность.
namestringОпределяет имя элемента <keygen>.

Тег <keygen> поддерживает Глобальные атрибуты и Атрибуты событий.

Практика

Какие утверждения верны для HTML-тега <keygen>?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.