Подозрительный текст
Emacs может отображать текст из многих внешних источников, например из электронной почты и с веб-сайтов. Злоумышленники могут попытаться запутать пользователя, читающего этот текст, используя обфусцированные URL-адреса или адреса электронной почты, и заставить его перейти на веб-страницу, которую он не собирался посещать, или отправить письмо не по тому адресу.
Обычно для этого используются символы из письменностей, которые визуально похожи на символы ASCII (то есть являются гомоглифами), но применяются и другие методы, например использование двунаправленных переопределений или текста ссылки HTML, который говорит одно, тогда как лежащий в его основе URL указывает в другое место.
Чтобы помочь выявлять эти подозрительные текстовые строки, Emacs предоставляет библиотеку для выполнения ряда проверок текста. (Обоснование доступных проверок и более подробную информацию о них см. в UTS #39: механизмы безопасности Unicode.) Пакетам, представляющим данные, которые могут быть подозрительными, следует использовать эту библиотеку, чтобы помечать подозрительный текст при отображении.
- Функция: textsec-suspicious-p object type
-
Эта функция представляет собой интерфейс высокого уровня, который следует использовать пакетам. Она учитывает пользовательский параметр
textsec-check, позволяющий отключить проверки.Эта функция проверяет object (тип данных которого зависит от type), чтобы определить, выглядит ли он подозрительно при интерпретации как объект типа type. Доступны следующие типы и соответствующие им типы данных object:
domain-
Проверить, выглядит ли подозрительно доменное имя (например, ‘www.gnu.org’). object должен быть строкой с именем домена.
url-
Проверить, выглядит ли подозрительно URL-адрес (например, ‘http://gnu.org/foo/bar’). object должен быть строкой с проверяемым URL-адресом.
link-
Проверить, выглядит ли подозрительно ссылка HTML (например, ‘<a href='http://gnu.org'>fsf.org</a>’). В этом случае object должен быть ячейкой
cons, гдеcar— строка URL-адреса, аcdr— текст ссылки. Ссылка считается подозрительной, если текст ссылки содержит имя домена, а это имя домена указывает не на тот же адрес URL. email-address-
Проверить, выглядит ли подозрительно адрес электронной почты (например, ‘foo@example.org’). object должен быть строкой.
local-address-
Проверить, выглядит ли подозрительно локальная часть адреса электронной почты (часть до знака ‘@’). object должен быть строкой.
name-
Проверить, выглядит ли подозрительно имя (используемое в заголовке письма). object должен быть строкой.
email-address-headerПроверить, выглядит ли подозрительно полный заголовок адреса электронной почты RFC2822 (например, ‘=?utf-8?Q?=E2=84=AB?= <foo@example.com>’). object должен быть строкой.
Если object является подозрительным, эта функция возвращает строку с объяснением причины. Если object не является подозрительным, функция возвращает
nil.
Если текст является подозрительным, приложение должно пометить его с помощью начертания textsec-suspicious и каким-либо образом предоставить пользователю объяснение, возвращаемое функцией textsec-suspicious-p (например, во всплывающей подсказке). Приложение также может запрашивать у пользователя подтверждение перед выполнением каких-либо действий с подозрительной строкой (например, отправкой письма на подозрительный адрес электронной почты).
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Suspicious-Text.html