Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как исключить конфиденциальные данные из истории буфера обмена в Windows с помощью Delphi

Delphi , Синтаксис , Шифрование

 

Проблема конфиденциальности буфера обмена Windows

В современных версиях Windows (10 и 11) реализованы две функции, которые могут представлять угрозу конфиденциальности:
1. История буфера обмена (активируется Win+V) - сохраняет все скопированные элементы
2. Облачный буфер обмена - синхронизирует содержимое между устройствами

Когда вы копируете конфиденциальные данные (пароли, персональную информацию), они могут попасть в историю или быть синхронизированы, что создает угрозу безопасности.

Решение для Delphi-разработчиков

Windows API предоставляет специальные форматы буфера обмена, которые позволяют исключить конфиденциальные данные из истории и облачной синхронизации:

  1. ExcludeClipboardContentFromMonitorProcessing - исключает из мониторинга
  2. CanIncludeInClipboardHistory - разрешает/запрещает историю
  3. CanUploadToCloudClipboard - разрешает/запрещает облачную синхронизацию

Реализация на Object Pascal

Вот полное решение в виде класса-помощника для TClipboard:

unit SecureClipboard;

interface

uses
  Winapi.Windows, System.Classes, Vcl.Clipbrd, System.SysUtils;

type
  TSecureClipboard = class helper for TClipboard
  private
    class var
      FExcludeFromMonitoring: UINT;
      FCanIncludeInHistory: UINT;
      FCanUploadToCloud: UINT;
      class procedure InitializeFormats;
  public
    class procedure SecureCopyText(const AText: string);
  end;

implementation

{ TSecureClipboard }

class procedure TSecureClipboard.InitializeFormats;
begin
  if FExcludeFromMonitoring = 0 then
    FExcludeFromMonitoring := RegisterClipboardFormat('ExcludeClipboardContentFromMonitorProcessing');
  if FCanIncludeInHistory = 0 then
    FCanIncludeInHistory := RegisterClipboardFormat('CanIncludeInClipboardHistory');
  if FCanUploadToCloud = 0 then
    FCanUploadToCloud := RegisterClipboardFormat('CanUploadToCloudClipboard');
end;

class procedure TSecureClipboard.SecureCopyText(const AText: string);
const
  Enable = 1;
  Disable = 0;
begin
  InitializeFormats;

  Open;
  try
    // Очищаем буфер обмена перед добавлением новых данных
    Clear;

    // Устанавливаем флаги безопасности
    SetAsHandle(FExcludeFromMonitoring, THandle(Enable));
    SetAsHandle(FCanIncludeInHistory, THandle(Disable));
    SetAsHandle(FCanUploadToCloud, THandle(Disable));

    // Добавляем основной текст
    AsText := AText;
  finally
    Close;
  end;
end;

end.

Пример использования

uses
  SecureClipboard;

procedure TForm1.Button1Click(Sender: TObject);
begin
  // Безопасное копирование пароля
  Clipboard.SecureCopyText('MySuperSecretPassword123');
end;

Альтернативные решения

1. Временное отключение истории буфера обмена

Если вам нужно полностью отключить историю буфера обмена для определенных операций:

procedure DisableClipboardHistory;
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_CURRENT_USER;
    if Reg.OpenKey('Software\Microsoft\Clipboard', True) then
    begin
      Reg.WriteInteger('EnableClipboardHistory', 0);
      Reg.CloseKey;
    end;
  finally
    Reg.Free;
  end;
end;

Не забудьте включить обратно после завершения операций!

2. Использование временного буфера обмена

Можно создать собственный буфер обмена в памяти приложения:

type
  TSecureBuffer = class
  private
    FText: string;
  public
    procedure CopyToClipboard;
    property Text: string read FText write FText;
  end;

procedure TSecureBuffer.CopyToClipboard;
begin
  if Clipboard.SupportsText then
  begin
    Clipboard.Open;
    try
      Clipboard.AsText := FText;
    finally
      Clipboard.Close;
    end;
    // Очищаем сразу после копирования
    FText := '';
  end;
end;

Рекомендации по безопасности

  1. Минимизируйте время нахождения данных в буфере - очищайте буфер сразу после использования
  2. Используйте специализированные менеджеры паролей - они часто имеют безопасные механизмы копирования
  3. Обучайте пользователей - объясните риски использования обычного копирования для конфиденциальных данных

Заключение

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

Для максимальной безопасности рекомендуется комбинировать технические решения с обучением пользователей и применением специализированных инструментов защиты данных.

Создано по материалам из источника по ссылке.

Решение на Delphi для исключения конфиденциальных данных из истории буфера обмена Windows и облачной синхронизации с использованием специальных API-форматов.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Шифрование ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-07-14 04:42:11/0.00360107421875/0