클립보드(컴퓨팅)

Clipboard (computing)

클립보드는 일부 운영 체제가 단기 저장 및 애플리케이션 프로그램 내부와 간 전송을 위해 제공하는 버퍼다.클립보드는 보통 일시적이고 이름을 밝히지 않으며, 그 내용은 컴퓨터의 RAM에 있다.[1]

클립보드는 프로그램이 잘라내기, 복사 붙여넣기 작업을 지정할 수 있는 응용 프로그램 프로그래밍 인터페이스를 제공한다.바인딩메뉴 선택을 포함할 수 있는 이러한 작업을 사용자가 명령하는 방법을 정의하는 것은 프로그램에 맡겨진다.요소를 복사하거나 절단할 때 클립보드는 요소가 어디에 붙여져 있든 합리적인 결과를 얻을 수 있도록 충분한 정보를 저장해야 한다.애플리케이션 프로그램은 운영 체제가 제공하는 클립보드 기능을 확장할 수 있다.클립보드 관리자는 사용자에게 클립보드에 대한 추가 제어 권한을 부여할 수 있다.특정한 클립보드 의미론운영 체제에 따라 다르며, 동일한 시스템의 버전마다 다를 수 있으며, 때로는 프로그램과 사용자 선호도에 의해 변경될 수 있다.

Windows, LinuxMacOS는 단일 클립보드 트랜잭션을 지원한다.[2][3]

역사

작은 텍스트 스니펫의 버퍼로 사용되는 클립보드는 펜티 카네르바가 삭제된 텍스트를 복원하기 위해 그것을 사용했을 때 처음 사용되었다.[4]한 곳에서 텍스트를 삭제하고 다른 곳에서 복원할 수 있기 때문에 '삭제'라는 용어는 이 경우에 기대할 만한 것이 아니었다.래리 테슬러(Larry Tesler)는 1973년에 이것을 잘라내기, 복사, 붙여넣기(clipboard)로 개명하고, 이 버퍼에 대해 "클립보드"라는 용어를 만들었다. 왜냐하면 이러한 기술들은 복사 또는 잘라낸 데이터를 임시로 저장하기 위한 클립보드가 필요하기 때문이다.[5]

데이터 형식

애플리케이션은 클립보드를 통해 개체의 직렬화된 표현 또는 약속(더 큰 개체의 경우)을 제공하여 통신한다.[6]어떤 상황에서는 추상적인 공장의 사용을 통해 특정 공통 데이터 형식의 전송이 불투명하게 이루어질 수 있다. 예를 들어, Mac OS X는 객체를 백업하는 이미지 데이터의 실제 형식이 숨겨져 있지만 클립보드에 저장된 이미지 데이터에 대한 액세스를 제공하기 위해 NSImage라는 클래스를 사용한다.송수신 애플리케이션은 종종 허용 가능한 형식 변환 제공을 담당하는 활성 GUI 위젯과 그들 사이에서 전송될 수 있는 형식을 협상한다.붙여넣기판은 URL, 색상, 이미지, 문자열, 귀속 문자열(리치 텍스트), 소리 등의 일반적인 항목의 전송을 허용한다.운영 체제와 GUI 툴킷은 리치 텍스트에서 일반 텍스트로 변환하거나 그 반대로 변환하는 등 몇 가지 일반적인 변환을 제공할 수 있다.데이터 전송을 위한 다양한 유형 식별자는 MIMEUniform Type Identifier와 같이 형식 시스템 간의 허용 가능한 매핑을 자동으로 제공할 수 있는 최신 운영 체제에 의해 지원된다.[7][8]

컴퓨터 보안

클립보드 하이잭킹은 사람의 클립보드 내용이 악의적인 웹 사이트에 대한 링크와 같은 악의적인 데이터로 대체되는 공격이다.[9]일부 보안 구멍을 패치했지만, 자바스크립트는 여전히 'pastejacking'[10][11]이라는 이름의 공격을 통해 클립보드 내용을 수정하는 데 사용될 수 있다.이 공격을 개발한 딜런 에이레이는 이 공격이 실행하기 싫은 명령을 실행하도록 사용자를 속이는 데 어떻게 사용될 수 있는지를 보여주는 웹사이트를 만들었다.[12]

웹페이지가 클립보드 데이터를 가져오는 악용도 있었다.2013년 초 연구진은 안드로이드 기반 암호 관리자에서 비롯되는 위험을 노출하고 이러한 앱 중 가장 인기 있는 앱 21개의 암호가 매우 낮은 수준의 권한을 가진 앱들을 포함한 안드로이드 기기에서 다른 앱으로 어떻게 접속될 수 있는지를 문서화했다.[13]Joe Siegrist는 이것이 "Android에서 실행되는 모든 것에 영향을 미치는 OS 수준의 문제"[14][1]라고 지적한다.

클립보드 관리 및 확장

클립보드 관리 프로그램의 예인 Glipper

클립보드 관리자 확장자는 운영 체제의 통합된 클립보드 기능에 기능을 추가한다.사용자가 클립보드를 조작할 수 있도록 하는 애플리케이션이다.호환되지 않는 여러 GUI 툴킷을 사용하는 Linux와 같은 플랫폼에서는 클립보드 관리자가 다른 프레임워크를 사용하여 애플리케이션 간에 데이터를 전송하는 경우가 많다.

클립보드 관리자가 여러 컷 앤 페이스트 트랜잭션을 제공할 때 클립보드는 스택 또는 스크랩북으로 처리되며, 새로운 컷과 복사본이 최근 트랜잭션 목록에 배치된다.표준 페이스트 작업은 가장 최근의 트랜잭션을 복사하는 반면, 전문화된 페이스트는 저장된 다른 트랜잭션에 대한 액세스를 제공한다.이러한 관리자들은 일반적으로 트랜잭션 기록을 표시하는 창을 제공하며 사용자가 이전 복사본을 선택하고 편집하며 형식을 변경하고 검색까지 할 수 있다.

대부분의 운영 체제(예: Windows, MacOS, Linux, X11, Android, iOS)는 클립보드 내용을 영구 스토리지에 저장하지 않기 때문에 사용자가 시스템을 로그아웃하거나 재부팅할 때 클립보드 내용이 삭제되며 클립보드를 지속적으로 저장하는 기능이 추가된다.또 다른 예로는 복사 또는 잘라내기 이벤트 시 클립보드 데이터를 온라인 위치에 저장하여 로컬 클립보드가 온라인 애플리케이션과 함께 작동하도록 하여 이 데이터를 온라인 애플리케이션에서 붙여넣기 위해 사용할 수 있도록 하는 것이다.클립보드 관리자는 복사 및 붙여넣기를 지원하지 않는 소프트웨어의 한계를 극복하는 도구 역할도 할 수 있다(예를 들어, 원격 Windows 서버에 로그인하는 동안 사용자 이름과 암호를 복사하여 붙여넣을 수 없다).

운영 체제별 클립보드

Microsoft Windows 및 대응OS

클립으로 자르다
ReactOS-0.4.13 clip command 667x434.png
리액트OS clip명령하다
개발자Microsoft, ReactOS 기고자
운영 체제Windows, 리액션OS
유형명령
면허증 Windows: 독점 상용 소프트웨어
ReactOS: GNU 일반 공중 라이선스
웹사이트docs.microsoft.com/en-us/windows-server/administration/windows-commands/clip

Microsoft Windows대응의 클립보드OS는 하나의 항목을 여러 개의 사용 가능한 형식으로 보유한다.

모든 항목은 적어도 하나의 클립보드 형식을 가지고 있지만 동일한 데이터의 다른 형식 형식을 가질 수 있다.가능한 세 가지 유형의 가능한 형식은 다음과 같다.[15]

  • 표준 형식[16](예: CF_B)ITMAP 또는 CF_UNICODETEXT),
  • 등록된 형식[17](예: CF_HTML)
  • 내부용 비공개 형식

Windows XP를 포함하여 클립보드는 ClipBook Viewer 응용 프로그램을 통해 액세스할 수 있다.[18]새로운 버전의 Windows에서는 클립보드 관리자를 통해 콘텐츠에 액세스할 수 있다.

데이터를 Windows에[19] 저장하고 반응할 수 있음clip 명령을 사용하여 명령줄을 통한 OS[20] 클립보드:[21]

$ # 폴더의 내용을 클립보드에 붙여넣기: $dir clip

또한 PowerShell을 통해 클립보드에 액세스할 수 있음:[22][23]

# 디렉토리의 내용을 클립보드에 붙여넣기 세트 클립보드 -경로 "C:\디렉토리\" # 클립보드의 내용을 가져오는 방법 겟-클립보드 

애플 마코스

Apple macOS의 클립보드는 사용 가능한 여러 형식의 한 항목을 보관한다.

클립보드의 내용은 파인더의 편집 메뉴에서 클립보드 표시 메뉴 항목을 선택하여 볼 수 있다.원시 데이터와 저장된 형식은 ClipboardViewer를 사용하여 볼 수 있다.[24]

다음 명령을 사용하여 명령줄에서 클립보드에 액세스할 수 있다.[25][26]

데이터를 클립보드에 복사하는 데 $#: $ 에코 'hello world' pbcopy $ 클립보드에서 붙여넣는 $pbpaste hello world

X 창 시스템

유닉스리눅스 시스템에서 일반적으로 사용되는 X 윈도 시스템은 "Primary", "SECURE", "CLIP보드"[27]라는 이름의 클립보드를 3개 제공한다.

다양한 선택의 사용과 취급은 표준화되어 있지 않다.그러나 GNOME 또는 KDE와 같은 대부분의 현대적인 툴킷과 데스크탑 환경은 freedesktop.org 규격에 요약되어 널리 받아들여지는 규약을 따른다.[28]하나의 선택인 클립보드는 기존 클립보드 의미에 사용되며 Windows와 동일한 바로 가기를 가지고 있다.또 다른 선택인 Primary는 X11 특유의 메커니즘이다.데이터는 강조 표시 즉시 "복사"되고 세 번째(중간) 마우스 버튼으로 붙여진다.[29]이 복사된 데이터는 보통 클립보드 선택 항목에서 분리되며 내용을 변경하지 않는다.[30]SECIAL은 Primary의 대안으로 계획되었지만 일관성 없이만 사용된다.[27]

클립보드에 액세스할 수 있는 두 가지 명령줄 도구(xsel 및 xclip)가 있다.[31]

$ # 클립보드에 xclip $ 에코 텍스트 xclip -in -clip clipboard $를 사용하여 표준 출력을 클립보드에 붙여넣는 경우 xsel $ 에코 텍스트 xsel --cel을 사용하여 표준 출력을 클립보드에 붙여넣는 경우

OS X와 Windows의 주요 차이점은 클립보드 클립보드에는 실제로 데이터가 저장되지 않고 복사 또는 잘라낸 데이터에 대한 참조만 있다는 것이다.응용 프로그램은 클립보드 선택 항목의 소유권을 주장하고 X 서버에 소유권을 전달한다.[29]이 데이터를 붙여넣을 때, 데이터 및 사용 가능한 형식은 클립보드 선택 항목을 소유하는 응용프로그램에서 요청된다.[32]

아미가오스

아미가 운영체제는 256대를 사용하기 때문에 클립보드가 동시에 여러 개 있다.[33]

안드로이드

안드로이드는 하나의 클립 객체까지 담을 수 있는 클립보드를 제공하며 시스템 전체에서 액세스할 수 있다.간단한 텍스트는 클립보드에 직접 저장되며, 복잡한 데이터는 참조에 의해 저장된다.클립 개체는 텍스트 문자열, URI 개체 또는 의도의 세 가지 형식 중 하나를 가지고 있다.[34]

클립보드와 상호 작용하기 위해 은 Class ClipboardManager와[35] 시스템 호출을 사용하여 객체를 잘라내고 복사하고 붙여넣는다.

Android 8.0에서는 클립보드가 사용자 인터페이스에 처음 나타난다.사용자가 클립보드에서 붙여넣기를 준비하는 상황에서 과거 클립보드에 복사하거나 잘라낸 많은 객체에 접근할 수 있는 "클립보드" 옵션이 나타난다.그것과는 별도로, 그리고 이전 버전에서는, 사용자가 클립보드를 이용할 수 있게 하는 앱 외에는, 사용자는 클립보드에 접근할 수 없다.

애플 iOS

이 클립보드는 OS X와 유사한 iOS에서 "paste board"라고 불린다. 이 운영체제의 앱들은 UIPasteboard 클래스의 인스턴스라고 불리는 추가 페이스트보드를 만들 수 있다. 이것은 공개적이거나 비공개적일 수 있다.한 인스턴스는 하나의 항목 또는 여러 개의 항목을 다른 형식으로 보유할 수 있다.[36]

형식은 균일형식별자(UTI)로 식별된다.[37]

페이스트 보드에 포함된 데이터는 GUI를 통해서만 액세스할 수 없고 시스템과 애플리케이션에서만 액세스할 수 있다.

API.

응용프로그램은 API를 통해 클립보드나 클립보드의 데이터에 접근할 수 있다.

자바스크립트

JavaScript에는 사용자 클립보드 데이터(클립보드 이벤트)[38]의 변화를 감지하고 클립보드의 내용을 변경하거나 클립보드 데이터(클립보드 데이터.getData()에서 읽는 기능이 있지만 클립보드데이터.setData()[39]가 존재하지만 사용자의 클립보드를 변경하면 보안 문제를 나타낼 수 있기 때문에 모든 브라우저에서 지원되지 않는다.

Qt

Qt에는 지원되는 모든 플랫폼에[40] 대한 래퍼가 존재한다.클래스 QClipboard를 사용하여 윈도우 시스템 클립보드에 대한 액세스를 제공한다.이 세분류는 기능별 공통 데이터 유형에 대한 접근을 용이하게 한다.[41]클립보드에 저장된 요소의 데이터 유형은 MIME을 통해 표시되며, MIME 데이터도 이 클래스의 기능을 이용하여 클립보드에 넣을 수 있다.

참고 항목

참조

  1. ^ a b "What is a Clipboard in Computing? - Definition from Techopedia". Techopedia.com. Archived from the original on 2018-02-02. Retrieved 2018-02-01.
  2. ^ Kimmatkar, Sarang B. (2014). "Extending functionalities of default clipboard". (IJCSIT) International Journal of Computer Science and Information Technologies 5. 6.
  3. ^ Stephens, Rod (2010). Visual Basic 2010 : programmer's reference. Library Genesis. Indianapolis, IN : Wiley Pub., Inc. ISBN 978-0-470-49983-2.
  4. ^ Moggridge, Bill (2007). Designing interactions. Cambridge, Massachusetts: MIT Press. p. 65ff. ISBN 9780262134743.
  5. ^ Larry Tesler. "A User Experience Retrospective". Archived from the original on 2018-02-02. Retrieved 23 January 2018.
  6. ^ "Dragging Files". developer.apple.com. Retrieved 9 December 2018.
  7. ^ "NSPasteboard - AppKit Apple Developer Documentation". developer.apple.com. Archived from the original on 2018-05-26. Retrieved 9 December 2018.
  8. ^ "Adopting Uniform Type Identifiers". developer.apple.com. Archived from the original on 2018-07-21. Retrieved 9 December 2018.
  9. ^ "What is clipboard hijack attack? - Definition from WhatIs.com". WhatIs.com. Archived from the original on 2017-01-05. Retrieved 4 January 2017.
  10. ^ Chirgwin, Richard. "Pastejack attack turns your clipboard into a threat". The Register. Archived from the original on 2017-01-04. Retrieved 4 January 2017.
  11. ^ "Researcher warns of 'pastejacking' hack attacks targeting users' clipboards". Graham Cluley. 26 May 2016. Archived from the original on 2017-01-05. Retrieved 4 January 2017.
  12. ^ "dxa4481/Pastejacking". GitHub. Archived from the original on 2017-01-04. Retrieved 4 January 2017.
  13. ^ Fahl, Sascha; Harbach, Marian; Oltrogge, Marten; Muders, Thomas; Smith, Matthew (2013). "Hey, You, Get Off of My Clipboard" (PDF). Financial Cryptography and Data Security. Lecture Notes in Computer Science. Vol. 7859. pp. 144–161. doi:10.1007/978-3-642-39884-1_12. ISBN 978-3-642-39883-4. Archived (PDF) from the original on 2017-09-19. Retrieved 4 January 2017.
  14. ^ "Using a password manager on Android? It may be wide open to sniffing attacks". Ars Technica. 21 November 2014. Archived from the original on 2017-01-04. Retrieved 4 January 2017.
  15. ^ "Clipboard Formats (Windows)". msdn.microsoft.com. Archived from the original on 2018-02-07. Retrieved 2018-02-03.
  16. ^ "Standard Clipboard Formats (Windows)". msdn.microsoft.com. Archived from the original on 2018-02-07. Retrieved 2018-02-03.
  17. ^ "HTML Clipboard Format (Internet Explorer)". msdn.microsoft.com. Archived from the original on 2018-02-07. Retrieved 2018-02-03.
  18. ^ "View & Manage Clipboard In Windows 10/8/7". The Windows Club. 2013-04-12. Archived from the original on 2018-02-12. Retrieved 2018-02-06.
  19. ^ "clip Microsoft Docs". Docs.microsoft.com. 2017-10-16. Retrieved 2019-09-26.
  20. ^ "reactos/base/applications/cmdutils/clip at master · reactos/reactos · GitHub". Github.com. Retrieved 2019-09-26.
  21. ^ "How to Copy Command Line Output to the Windows Clipboard". www.labnol.org. Archived from the original on 2018-02-07. Retrieved 2018-02-06.
  22. ^ sdwheeler. "Get-Clipboard (Microsoft.PowerShell.Management)". docs.microsoft.com. Archived from the original on 2018-01-26. Retrieved 2018-02-06.
  23. ^ sdwheeler. "Set-Clipboard (Microsoft.PowerShell.Management)". docs.microsoft.com. Archived from the original on 2018-02-07. Retrieved 2018-02-06.
  24. ^ "ClipboardViewer". developer.apple.com. Archived from the original on 2018-02-07. Retrieved 2018-02-06.
  25. ^ "Copy to clipboard from terminal in OS X". rogeriopvl.com. Archived from the original on 2013-08-15. Retrieved 2013-07-02.
  26. ^ "pbcopy(1) Mac OS X Manual Page". apple.com. Archived from the original on 2014-03-28. Retrieved 2013-07-02.
  27. ^ a b "Clipboard - ArchWiki". wiki.archlinux.org. Archived from the original on 2018-02-17. Retrieved 2018-02-16.
  28. ^ "clipboards-spec". freedesktop.org. Archived from the original on 2014-12-24. Retrieved 2014-08-16.
  29. ^ a b "Copy & Paste, Drag & Drop [MI Wiki]". wiki.mi.ur.de (in German). Archived from the original on 2018-02-16. Retrieved 2018-02-16.
  30. ^ "gnu.org". www.gnu.org. Archived from the original on 2017-12-24. Retrieved 2018-02-16.
  31. ^ "Copying and Pasting To and From the System Clipboard On The Command Line — Fernando Basso". fernandobasso.github.io. Archived from the original on 2018-02-07. Retrieved 2018-02-06.
  32. ^ "X Selections, X Cut Buffers, and Emacs Kill Rings". www.jwz.org. Archived from the original on 2018-03-04. Retrieved 2018-02-02.
  33. ^ "Clipboard Device - AmigaOS Documentation Wiki". wiki.amigaos.net. Archived from the original on 2018-02-05. Retrieved 2018-02-03.
  34. ^ "Copy and Paste Android Developers". developer.android.com. Archived from the original on 2018-02-07. Retrieved 2018-02-06.
  35. ^ "ClipboardManager Android Developers". developer.android.com. Archived from the original on 2018-02-07. Retrieved 2018-02-02.
  36. ^ "Pasteboard". developer.apple.com. Archived from the original on 2018-02-07. Retrieved 2018-02-01.
  37. ^ "Uniform Type Identifier". developer.apple.com. Archived from the original on 2018-02-07. Retrieved 2018-02-06.
  38. ^ "Clipboard API and events – ClipboardEvent". www.w3.org. Archived from the original on 2018-01-28. Retrieved 2018-02-08.
  39. ^ "Clipboard API and events – Synchronous Clipboard API". www.w3.org. Archived from the original on 2018-01-28. Retrieved 2018-02-08.
  40. ^ "platforms\plugins\src - qt/qtbase.git - Qt Base (Core, Gui, Widgets, Network, ...)". code.qt.io. Archived from the original on 2018-02-09. Retrieved 2018-02-02.
  41. ^ "QClipboard Class Qt GUI 5.10". doc.qt.io. Archived from the original on 2018-02-02. Retrieved 2018-02-02.

추가 읽기

외부 링크