stringtranslate.com

Буфер обмена (вычисления)

Буфер обмена — это буфер, который некоторые операционные системы предоставляют для кратковременного хранения и передачи внутри прикладных программ и между ними. Буфер обмена обычно является временным и безымянным, а его содержимое находится в оперативной памяти компьютера . [1]

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

Windows , Linux и macOS поддерживают одну транзакцию буфера обмена. [2] [3]

История

Буфер обмена в качестве буфера для небольших фрагментов текста впервые был использован Пентти Канервой , когда он использовал его для хранения удаленных текстов с целью их восстановления. [4] Поскольку можно было удалить текст в одном месте и восстановить его в другом, термин «удалить» был не тем, чего можно было бы ожидать в этом случае. Ларри Теслер в 1973 году переименовал это в вырезание, копирование и вставку и придумал для этого буфера термин «буфер обмена», поскольку для этих методов необходим буфер обмена для временного сохранения скопированных или вырезанных данных. [5]

Форматы данных

Приложения взаимодействуют через буфер обмена, предоставляя либо сериализованные представления объекта, либо обещание (для более крупных объектов). [6] В некоторых случаях передача определенных общих форматов данных может быть достигнута непрозрачно за счет использования абстрактной фабрики ; например, Mac OS X использует класс NSImage для обеспечения доступа к данным изображения, хранящимся в буфере обмена, хотя фактический формат данных изображения, поддерживающих объект, скрыт. Приложение-отправитель и получатель согласовывают форматы, которые могут передаваться между ними, часто с активным виджетом графического интерфейса , ответственным за обеспечение приемлемых преобразований типов. Монтажный стол позволяет передавать общие элементы, такие как URL-адреса, цвета, изображения, строки, строки с атрибутами ( форматированный текст ) и звуки. Операционная система и набор инструментов графического пользовательского интерфейса могут обеспечивать некоторые общие преобразования, например преобразование форматированного текста в обычный текст и наоборот. Различные идентификаторы типов для передачи данных поддерживаются современными операционными системами, которые могут автоматически обеспечивать приемлемые сопоставления между системами типов, например между MIME и Uniform Type Identifier . [7] [8]

Компьютерная безопасность

Взлом буфера обмена — это эксплойт , при котором содержимое буфера обмена человека заменяется вредоносными данными, например ссылкой на вредоносный веб-сайт. [9] Хотя некоторые дыры в безопасности были исправлены, JavaScript по-прежнему можно использовать для изменения содержимого буфера обмена с помощью атаки, получившей название «pastejacking». [10] [11] Дилан Эйри, разработавший атаку, создал веб-сайт, демонстрирующий, как этот эксплойт можно использовать, чтобы обманом заставить пользователя выполнить команды, которые он не хотел запускать. [12]

Были случаи, когда веб-страницы захватывали данные буфера обмена. В начале 2013 года исследователи выявили риски, связанные с менеджерами паролей на базе Android , и задокументировали, как пароли в 21 из самых популярных из этих приложений могут быть доступны любому другому приложению на устройстве Android, в том числе с крайне низким уровнем привилегий. [13] Джо Зигрист отмечает, что это « проблема на уровне ОС , которая влияет на все, что работает на Android». [14] [1]

Управление буфером обмена и расширения

Glipper , пример программы управления буфером обмена

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

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

Поскольку большинство операционных систем (например, Windows, macOS, Linux, X11, Android, iOS) не сохраняют содержимое буфера обмена в каком-либо постоянном хранилище — когда пользователь выходит из системы или перезагружает систему, содержимое буфера обмена удаляется — дополнительная функция заключается в сохранении буфер обмена настойчиво. Другой пример — заставить локальный буфер обмена работать с онлайн-приложениями, сохраняя данные буфера обмена в онлайн-местоположении при копировании или вырезании, делая эти данные доступными для онлайн-приложений для вставки. Менеджеры буфера обмена также могут служить инструментами для преодоления ограничений программного обеспечения, не поддерживающего копирование и вставку (например, при входе на удаленный сервер Windows невозможно скопировать и вставить свое имя пользователя и пароль).

Буфер обмена для конкретной операционной системы

АмигаОС

Операционная система Amiga использует 256 единиц, поэтому одновременно имеется несколько буферов обмена . [15]

Андроид

Android предоставляет буфер обмена, который может содержать до одного объекта клипа и доступен для всей системы. Простой текст сохраняется прямо в буфере обмена; сложные данные хранятся по ссылке. Объект клипа имеет один из трех форматов: текстовая строка, объект URI или намерение. [16]

Для взаимодействия с буфером обмена приложение использует класс ClipboardManager [17] и системные вызовы для вырезания, копирования и вставки объектов.

В Android 8.0 буфер обмена сначала появляется в пользовательском интерфейсе: в ситуации, когда пользователь готовится вставить данные из буфера обмена, появляется опция «Буфер обмена», которая предоставляет пользователю доступ ко многим объектам, скопированным или вырезанным в буфер обмена в прошлом. Кроме того, как и в более ранних версиях, пользователь не имеет доступа к буферу обмена, за исключением приложений, которые делают его доступным для пользователя.

iOS

Буфер обмена в iOS называется «монтажным столом», как и в OS X. Приложения в этой операционной системе могут создавать дополнительные монтажные области, называемые экземплярами класса UIPasteboard, которые могут быть общедоступными или частными. Один экземпляр может содержать один элемент или несколько элементов в разных форматах. [18]

Форматы идентифицируются унифицированными идентификаторами типов (UTI). [19]

К данным, содержащимся на монтажном столе, нельзя получить доступ через графический интерфейс, а только из системы и приложений.

macOS

Буфер обмена в macOS содержит один элемент в нескольких доступных форматах.

Содержимое буфера обмена можно просмотреть, выбрав пункт меню «Показать буфер обмена» в меню «Правка» Finder. Необработанные данные и сохраненные форматы можно просмотреть с помощью ClipboardViewer. [20]

Доступ к буферу обмена можно получить из командной строки с помощью следующих команд: [21] [22]

$ # для копирования данных в буфер обмена: $ echo 'hello world' | pbcopy $ # для вставки из буфера обмена: $ pbpaste hello world   

Microsoft Windows и ReactOS

Буфер обмена в Microsoft Windows и ReactOS содержит один элемент в нескольких доступных форматах.

Каждый элемент имеет по крайней мере один формат буфера обмена, но одни и те же данные могут иметь разные типы формата. Три различных типа возможных форматов: [23]

До Windows XP включительно доступ к буферу обмена можно было получить через приложение ClipBook Viewer . [26] В более новых версиях Windows доступ к содержимому можно получить через менеджеры буфера обмена .

Данные можно сохранить в буфер обмена Windows [27] и ReactOS [28] через командную строку с помощью команды clip : [29]

$ # чтобы вставить содержимое папки в буфер обмена: $ dir | клип  

Доступ к буферу обмена также можно получить через PowerShell : [30] [31]

# чтобы вставить содержимое каталога в буфер обмена Set-Clipboard  -Path  "C:\directory\" # чтобы получить содержимое буфера обмена Get-Clipboard

Windows 10 и Windows 11 включают приложение «Буфер обмена», позволяющее хранить несколько текстовых элементов буфера обмена. Доступ к нему можно получить, нажав Windows+V.

X оконная система

Система X Window, обычно используемая в системах Unix и Linux, предоставляет три буфера обмена, которые называются «БУФЕР ОБМЕНА», «ПЕРВИЧНЫЙ» и «ВТОРИЧНЫЙ». [32] Использование и обработка различных вариантов выбора не стандартизированы. Однако большинство современных наборов инструментов и сред рабочего стола, таких как GNOME или KDE , следуют широко распространенному соглашению, изложенному в спецификации freedesktop.org . [33] Один из вариантов, БУФЕР ОБМЕНА, используется для традиционной семантики буфера обмена с ярлыками, идентичными Windows. Другой вариант, PRIMARY, представляет собой механизм, специфичный для X11. Данные «копируются» сразу после выделения и вставляются третьей (средней) кнопкой мыши. [34] Эти скопированные данные обычно отделяются от выделения БУФЕР ОБМЕНА и не меняют его содержимое. [35] SECONDARY планировался как альтернатива PRIMARY, но использовался непоследовательно. [32]

Существует два инструмента командной строки (xsel и xclip), которые могут получить доступ к буферу обмена: [36]

$ # для вставки стандартного вывода в буфер обмена с помощью xclip
$ echo text | xclip -in -выделение буфера обмена        $ # для вставки стандартного вывода в буфер обмена с помощью xsel
$ echo text | xsel --буфер обмена      

Основное отличие от OS X и Windows заключается в том, что в буфере обмена CLIPBOARD фактически не хранятся никакие данные, а только ссылка на скопированные или вырезанные данные. Приложение заявляет о своем праве на выделенный фрагмент БУФЕР ОБМЕНА и сообщает о своем владении X-серверу. [34] При вставке этих данных данные и их доступные форматы запрашиваются из приложения, которому принадлежит выбор БУФЕР ОБМЕНА. [37]

API

Приложения могут получать доступ к буферу обмена или его данным через API .

JavaScript

В JavaScript существует класс, который обнаруживает изменения в данных буфера обмена пользователя (ClipboardEvent) [38] и функции для изменения содержимого буфера обмена или чтения из него (clipboardData.getData(), clipboardData.setData()) [39] , но поддерживаются не всеми браузерами, поскольку изменение буфера обмена пользователя может представлять собой проблему безопасности.

Qt

В Qt существует оболочка для каждой поддерживаемой платформы [40] . Он обеспечивает доступ к буферу обмена оконной системы с использованием класса QClipboard. Этот класс облегчает доступ к общим типам данных с помощью функций. [41] Тип данных элемента, хранящегося в буфере обмена, указывается через MIME, и данные MIME также можно поместить в буфер обмена с помощью функций из этого класса.

Смотрите также

Рекомендации

  1. ^ ab «Что такое буфер обмена в вычислительной технике? - Определение из Techopedia». Techopedia.com . Архивировано из оригинала 2 февраля 2018 г. Проверено 1 февраля 2018 г.
  2. ^ Кимматкар, Саранг Б. (2014). «Расширение функциональности буфера обмена по умолчанию». (IJCSIT) Международный журнал компьютерных наук и информационных технологий 5 . 6 .
  3. ^ Стивенс, Род (2010). Visual Basic 2010: справочник программиста . Библиотечный Бытие. Индианаполис, Индиана: Wiley Pub., Inc. ISBN 978-0-470-49983-2.
  4. ^ Моггридж, Билл (2007). Проектирование взаимодействий . Кембридж, Массачусетс: MIT Press. п. 65 и далее. ISBN 9780262134743.
  5. ^ Ларри Теслер. «Ретроспектива пользовательского опыта». Архивировано из оригинала 2 февраля 2018 г. Проверено 23 января 2018 г.
  6. ^ «Перетаскивание файлов». разработчик.apple.com . Проверено 9 декабря 2018 г.
  7. ^ «NSPasteboard — AppKit | Документация разработчика Apple» . разработчик.apple.com . Архивировано из оригинала 26 мая 2018 г. Проверено 9 декабря 2018 г.
  8. ^ «Принятие унифицированных идентификаторов типов» . разработчик.apple.com . Архивировано из оригинала 21 июля 2018 г. Проверено 9 декабря 2018 г.
  9. ^ «Что такое атака захвата буфера обмена? - Определение с WhatIs.com» . WhatIs.com . Архивировано из оригинала 5 января 2017 г. Проверено 4 января 2017 г.
  10. ^ Чиргвин, Ричард. «Атака Pastejack превращает ваш буфер обмена в угрозу». Регистр. Архивировано из оригинала 4 января 2017 г. Проверено 4 января 2017 г.
  11. ^ «Исследователь предупреждает о хакерских атаках, нацеленных на буфер обмена пользователей» . Грэм Клули. 26 мая 2016 г. Архивировано из оригинала 05 января 2017 г. Проверено 4 января 2017 г.
  12. ^ "dxa4481/Pastejacking" . Гитхаб . Архивировано из оригинала 4 января 2017 г. Проверено 4 января 2017 г.
  13. ^ Фаль, Саша; Харбах, Мариан; Олтрогге, Мартен; Мудерс, Томас; Смит, Мэтью (2013). «Эй, ты, вылезай из моего буфера обмена» (PDF) . Финансовая криптография и безопасность данных . Конспекты лекций по информатике. Том. 7859. стр. 144–161. дои : 10.1007/978-3-642-39884-1_12. ISBN 978-3-642-39883-4. Архивировано (PDF) из оригинала 19 сентября 2017 г. Проверено 4 января 2017 г.
  14. ^ «Используете менеджер паролей на Android? Он может быть широко открыт для атак с перехватом» . Арс Техника. 21 ноября 2014 г. Архивировано из оригинала 4 января 2017 г. Проверено 4 января 2017 г.
  15. ^ «Устройство буфера обмена — Wiki-документация AmigaOS» . wiki.amigaos.net . Архивировано из оригинала 05 февраля 2018 г. Проверено 3 февраля 2018 г.
  16. ^ «Копировать и вставить | Разработчики Android» . Developer.android.com . Архивировано из оригинала 07 февраля 2018 г. Проверено 06 февраля 2018 г.
  17. ^ «Менеджер буфера обмена | Разработчики Android» . Developer.android.com . Архивировано из оригинала 07 февраля 2018 г. Проверено 2 февраля 2018 г.
  18. ^ "Картон". разработчик.apple.com . Архивировано из оригинала 07 февраля 2018 г. Проверено 1 февраля 2018 г.
  19. ^ «Единый идентификатор типа». разработчик.apple.com . Архивировано из оригинала 07 февраля 2018 г. Проверено 06 февраля 2018 г.
  20. ^ "Просмотр буфера обмена". разработчик.apple.com . Архивировано из оригинала 07 февраля 2018 г. Проверено 06 февраля 2018 г.
  21. ^ «Копировать в буфер обмена из терминала в OS X» . rogeriopvl.com . Архивировано из оригинала 15 августа 2013 г. Проверено 2 июля 2013 г.
  22. ^ "Страница руководства pbcopy(1) Mac OS X" . apple.com . Архивировано из оригинала 28 марта 2014 г. Проверено 2 июля 2013 г.
  23. ^ «Форматы буфера обмена (Windows)» . msdn.microsoft.com . Архивировано из оригинала 07 февраля 2018 г. Проверено 3 февраля 2018 г.
  24. ^ «Стандартные форматы буфера обмена (Windows)» . msdn.microsoft.com . Архивировано из оригинала 07 февраля 2018 г. Проверено 3 февраля 2018 г.
  25. ^ «Формат буфера обмена HTML (Internet Explorer)» . msdn.microsoft.com . Архивировано из оригинала 07 февраля 2018 г. Проверено 3 февраля 2018 г.
  26. ^ «Просмотр и управление буфером обмена в Windows 10/8/7» . Клуб Windows . 12 апреля 2013 г. Архивировано из оригинала 12 февраля 2018 г. Проверено 06 февраля 2018 г.
  27. ^ "клип | Документы Microsoft" . Документы.microsoft.com. 16 октября 2017 г. Проверено 26 сентября 2019 г.
  28. ^ "reactos/base/applications/cmdutils/clip at master · actos/reactos · GitHub" . Гитхаб.com . Проверено 26 сентября 2019 г.
  29. ^ «Как скопировать вывод командной строки в буфер обмена Windows» . www.labnol.org . Архивировано из оригинала 07 февраля 2018 г. Проверено 06 февраля 2018 г.
  30. ^ SDwheeler. «Get-Буфер обмена (Microsoft.PowerShell.Management)». docs.microsoft.com . Архивировано из оригинала 26 января 2018 г. Проверено 06 февраля 2018 г.
  31. ^ SDwheeler. «Set-Буфер обмена (Microsoft.PowerShell.Management)». docs.microsoft.com . Архивировано из оригинала 07 февраля 2018 г. Проверено 06 февраля 2018 г.
  32. ^ ab «Буфер обмена — ArchWiki». wiki.archlinux.org . Архивировано из оригинала 17 февраля 2018 г. Проверено 16 февраля 2018 г.
  33. ^ "Спецификация буфера обмена" . freedesktop.org. Архивировано из оригинала 24 декабря 2014 г. Проверено 16 августа 2014 г.
  34. ^ ab «Копирование и вставка, перетаскивание [MI Wiki]» . wiki.mi.ur.de (на немецком языке). Архивировано из оригинала 16 февраля 2018 г. Проверено 16 февраля 2018 г.
  35. ^ "gnu.org". www.gnu.org . Архивировано из оригинала 24 декабря 2017 г. Проверено 16 февраля 2018 г.
  36. ^ «Копирование и вставка в системный буфер обмена и из него в командной строке - Фернандо Бассо» . Fernandobasso.github.io . Архивировано из оригинала 07 февраля 2018 г. Проверено 06 февраля 2018 г.
  37. ^ «Выборы X, буферы X Cut и кольца уничтожения Emacs» . www.jwz.org . Архивировано из оригинала 04 марта 2018 г. Проверено 2 февраля 2018 г.
  38. ^ «API и события буфера обмена - ClipboardEvent» . www.w3.org . Архивировано из оригинала 28 января 2018 г. Проверено 8 февраля 2018 г.
  39. ^ «API и события буфера обмена - Синхронный API буфера обмена» . www.w3.org . Архивировано из оригинала 28 января 2018 г. Проверено 8 февраля 2018 г.
  40. ^ "платформы\плагины\src - qt/qtbase.git - база Qt (ядро, графический интерфейс, виджеты, сеть,...)" . код.qt.io. _ Архивировано из оригинала 9 февраля 2018 г. Проверено 2 февраля 2018 г.
  41. ^ «Класс QClipboard | Qt GUI 5.10» . doc.qt.io. _ Архивировано из оригинала 2 февраля 2018 г. Проверено 2 февраля 2018 г.

дальнейшее чтение

Внешние ссылки