Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

История [ править ]

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

Форматы данных [ править ]

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

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

Microsoft Windows и ReactOS [ править ]

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

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

  • стандартные форматы [16] (например, CF_BITMAP или CF_UNICODETEXT),
  • зарегистрированные форматы [17] (например, CF_HTML)
  • частные форматы для внутреннего использования

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

Данные могут быть сохранены в Windows , [19] и ReactOS [20] Буфер обмена через командную строку с помощью зажима команды : [21]

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

К буферу обмена также можно получить доступ через PowerShell : [22] [23]

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

Apple macOS [ править ]

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

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

Используя следующие команды, можно получить доступ к буферу обмена из командной строки: [25] [26]

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

X Window System [ править ]

Система X Window, обычно используемая в системах Unix и Linux , предоставляет три буфера обмена, которые называются «ПЕРВИЧНЫЙ», «ВТОРИЧНЫЙ» и «БУФЕР ОБМЕНА». [27]

Использование и обработка различных вариантов выбора не стандартизированы. Однако большинство современных наборов инструментов и окружений рабочего стола, таких как GNOME или KDE , следуют общепринятому соглашению, изложенному в спецификации freedesktop.org . [28] Один вариант, CLIPBOARD, используется для традиционной семантики буфера обмена с ярлыками, идентичными Windows. Другой вариант, PRIMARY, - это механизм, специфичный для X11. Данные «копируются» сразу после выделения и вставляются третьей (средней) кнопкой мыши. [29] Эти скопированные данные обычно отделяются от выбора БУФЕР ОБМЕНА и не меняют его содержимое. [30] SECONDARY планировался как альтернатива PRIMARY, но используется только непоследовательно.[27]

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

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

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

AmigaOS [ править ]

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

Android [ править ]

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

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

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

Apple iOS [ править ]

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

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

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

API [ править ]

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

JavaScript [ править ]

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

Qt [ править ]

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

См. Также [ править ]

  • Менеджер буфера обмена
  • Вырезать, копировать и вставлять

Ссылки [ править ]

  1. ^ a b «Что такое буфер обмена в вычислительной технике? - Определение из Техопедии» . Techopedia.com . Архивировано 02 февраля 2018 года . Проверено 1 февраля 2018 .
  2. ^ Kimmatkar, Sarang Б. (2014). «Расширение функциональности буфера обмена по умолчанию». (IJCSIT) Международный журнал компьютерных наук и информационных технологий 5 . 6 .
  3. ^ Стивенс, Род (2010). Visual Basic 2010: справочник программиста . Библиотека Genesis. Индианаполис, ИН: ISBN Wiley Pub., Inc. 978-0-470-49983-2.
  4. ^ Моггридж, Билл (2007). Проектирование взаимодействий . Кембридж, Массачусетс: MIT Press. п. 65ff . ISBN 9780262134743.
  5. ^ Ларри Теслер. «Ретроспектива пользовательского опыта» . Архивировано 02 февраля 2018 года . Проверено 23 января 2018 года .
  6. ^ «Перетаскивание файлов» . developer.apple.com . Проверено 9 декабря 2018 .
  7. ^ "NSPasteboard - AppKit | Документация разработчика Apple" . developer.apple.com . Архивировано 26 мая 2018 года . Проверено 9 декабря 2018 .
  8. ^ «Принятие унифицированных идентификаторов типов» . developer.apple.com . Архивировано 21 июля 2018 года . Проверено 9 декабря 2018 .
  9. ^ «Что такое атака с захватом буфера обмена? - Определение с сайта WhatIs.com» . WhatIs.com . Архивировано 05 января 2017 года . Проверено 4 января 2017 года .
  10. ^ Чиргвин, Ричард. «Атака Pastejack превращает ваш буфер обмена в угрозу» . Реестр. Архивировано 4 января 2017 года . Проверено 4 января 2017 года .
  11. ^ «Исследователь предупреждает о хакерских атаках« pastejacking », нацеленных на буфер обмена пользователей» . Грэм Клули. 26 мая 2016. Архивировано 05 января 2017 года . Проверено 4 января 2017 года .
  12. ^ "dxa4481 / Pastejacking" . GitHub . Архивировано 4 января 2017 года . Проверено 4 января 2017 года .
  13. ^ Фахл, Саша; Харбах, Мариан; Олтрогге, Мартен; Мудерс, Томас; Смит, Мэтью (2013). «Эй, ты, убирайся из моего буфера обмена» (PDF) . Финансовая криптография и безопасность данных . Конспект лекций по информатике. 7859 . С. 144–161. DOI : 10.1007 / 978-3-642-39884-1_12 . ISBN  978-3-642-39883-4. Архивировано (PDF) из оригинала на 19 сентября 2017 года . Проверено 4 января 2017 года .
  14. ^ «Использование диспетчера паролей на Android? Он может быть широко открыт для атак сниффинга» . Ars Technica. Архивировано 4 января 2017 года . Проверено 4 января 2017 года .
  15. ^ «Форматы буфера обмена (Windows)» . msdn.microsoft.com . Архивировано 07 февраля 2018 года . Проверено 3 февраля 2018 .
  16. ^ «Стандартные форматы буфера обмена (Windows)» . msdn.microsoft.com . Архивировано 07 февраля 2018 года . Проверено 3 февраля 2018 .
  17. ^ «Формат буфера обмена HTML (Internet Explorer)» . msdn.microsoft.com . Архивировано 07 февраля 2018 года . Проверено 3 февраля 2018 .
  18. ^ «Просмотр и управление буфером обмена в Windows 10/8/7» . Клуб Windows . 2013-04-12. Архивировано 12 февраля 2018 года . Проверено 6 февраля 2018 .
  19. ^ "clip | Microsoft Docs" . Docs.microsoft.com. 2017-10-16 . Проверено 26 сентября 2019 .
  20. ^ "reactos / base / applications / cmdutils / clip at master · reactos / reactos · GitHub" . Github.com . Проверено 26 сентября 2019 .
  21. ^ «Как скопировать вывод командной строки в буфер обмена Windows» . www.labnol.org . Архивировано 07 февраля 2018 года . Проверено 6 февраля 2018 .
  22. ^ sdwheeler. «Получить буфер обмена (Microsoft.PowerShell.Management)» . docs.microsoft.com . Архивировано 26 января 2018 года . Проверено 6 февраля 2018 .
  23. ^ sdwheeler. «Установить-буфер обмена (Microsoft.PowerShell.Management)» . docs.microsoft.com . Архивировано 07 февраля 2018 года . Проверено 6 февраля 2018 .
  24. ^ "ClipboardViewer" . developer.apple.com . Архивировано 07 февраля 2018 года . Проверено 6 февраля 2018 .
  25. ^ «Копировать в буфер обмена из терминала в OS X» . rogeriopvl.com . Архивировано из оригинала на 2013-08-15 . Проверено 2 июля 2013 .
  26. ^ "pbcopy (1) Страница руководства Mac OS X" . apple.com . Архивировано 28 марта 2014 года . Проверено 2 июля 2013 .
  27. ^ a b "Буфер обмена - ArchWiki" . wiki.archlinux.org . Архивировано 17 февраля 2018 года . Проверено 16 февраля 2018 .
  28. ^ "спецификация буфера обмена" . freedesktop.org. Архивировано 24 декабря 2014 года . Проверено 16 августа 2014 .
  29. ^ a b «Копирование и вставка, перетаскивание [MI Wiki]» . wiki.mi.ur.de (на немецком языке). Архивировано 16 февраля 2018 года . Проверено 16 февраля 2018 .
  30. ^ "gnu.org" . www.gnu.org . Архивировано 24 декабря 2017 года . Проверено 16 февраля 2018 .
  31. ^ «Копирование и вставка в и из системного буфера обмена в командной строке - Фернандо Бассо» . fernandobasso.github.io . Архивировано из оригинала на 2018-02-07 . Проверено 6 февраля 2018 .
  32. ^ «Выбор X, буферы вырезания X и кольца уничтожения Emacs» . www.jwz.org . Архивировано 4 марта 2018 года . Проверено 2 февраля 2018 .
  33. ^ "Устройство с буфером обмена - Wiki документации AmigaOS" . wiki.amigaos.net . Архивировано 05 февраля 2018 года . Проверено 3 февраля 2018 .
  34. ^ «Копировать и вставить | Разработчики Android» . developer.android.com . Архивировано 07 февраля 2018 года . Проверено 6 февраля 2018 .
  35. ^ "ClipboardManager | Разработчики Android" . developer.android.com . Архивировано 07 февраля 2018 года . Проверено 2 февраля 2018 .
  36. ^ "Картон" . developer.apple.com . Архивировано 07 февраля 2018 года . Проверено 1 февраля 2018 .
  37. ^ «Единый идентификатор типа» . developer.apple.com . Архивировано 07 февраля 2018 года . Проверено 6 февраля 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 Base (Core, Gui, Widgets, Network, ...)" . code.qt.io . Архивировано 9 февраля 2018 года . Проверено 2 февраля 2018 .
  41. ^ "Класс QClipboard | Qt GUI 5.10" . doc.qt.io . Архивировано 02 февраля 2018 года . Проверено 2 февраля 2018 .

Дальнейшее чтение [ править ]

  • Станек, Уильям Р. (2008). Карманный консультант администратора командной строки Windows, 2-е издание . Microsoft Press . ISBN 978-0735622623.
  • Макэлхерн, Кирк (2006). Командная строка Mac OS X: Unix под капотом . Джон Вили и сыновья . ISBN 978-0470113851.

Внешние ссылки [ править ]

  • клип | Документы Microsoft
  • 2. Одноранговая коммуникация посредством выбора в ICCCM
  • Центр разработчиков Windows: перенос объектов оболочки с помощью перетаскивания и буфера обмена
  • Сеть разработчиков Microsoft: как работает буфер обмена, часть 1
  • Сеть разработчиков Microsoft: как работает буфер обмена, часть 2
  • Сеть разработчиков Microsoft: отложенная отрисовка данных буфера обмена