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

Улучшение безопасности ввода пароля на сенсорной клавиатуре Vcl.Touch.Keyboard.TTouchKeyboard в Delphi

Delphi , Синтаксис , Пароли

Вопрос безопасности ввода паролей всегда актуален, особенно в условиях, когда ввод осуществляется в присутствии посторонних. Разработчики, использующие компоненты Delphi, часто сталкиваются с необходимостью обеспечения конфиденциальности вводимых данных, в том числе и при использовании сенсорной клавиатуры Vcl.Touch.Keyboard.TTouchKeyboard.

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

Подходы к решению проблемы

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

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

Подтвержденное решение

Существует решение, которое позволяет улучшить безопасность ввода пароля, не изменяя исходный код компонента TTouchKeyboard. Можно создать свой класс кнопки, наследуясь от TKeyboardButton и переопределив метод Paint, чтобы исключить отображение подсветки нажатой клавиши.

type
  TMyKeyboardButton = class(TKeyboardButton)
  public
    procedure Paint(Canvas: TCustomCanvas = nil); override;
  end;

procedure TMyKeyboardButton.Paint(Canvas: TCustomCanvas);
begin
  if State <> TDrawState.dsPressed then
    inherited;
end;

Для использования этого класса необходимо установить его в качестве DefaultButtonClass для TTouchKeyboard:

TouchKeyboard1.DefaultButtonClass := TMyKeyboardButton;

Возможно, потребуется изменить свойство Layout компонента клавиатуры, чтобы запустить перестройку кнопок.

Пример кода

unit Unit1;

interface

uses
  Winapi.Windows, Vcl.Graphics, Vcl.ExtCtrls, Vcl.Touch, System.SysUtils, System.Variants, System.Classes, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls;

// ... другие компоненты формы ...

type
  TForm1 = class(TForm)
    TouchKeyboard1: TTouchKeyboard;
    procedure FormCreate(Sender: TObject);
  private
    { Добавить определения пользовательских переменных }
  public
    { Добавить пользовательский код }
  end;

type
  TMyKeyboardButton = class(TKeyboardButton)
  private
    function GetButtonState: TDrawState; override;
  public
    procedure Paint(Canvas: TCustomCanvas); override;
  end;

{ TForm1 }

implementation

{$R *.dfm}

// Процедура переопределения отображения состояния кнопки
function TMyKeyboardButton.GetButtonState: TDrawState;
begin
  Result := inherited GetButtonState and not dsPressed;
end;

procedure TMyKeyboardButton.Paint(Canvas: TCustomCanvas);
begin
  if GetButtonState <> dsSelected then
    inherited;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  TouchKeyboard1.DefaultButtonClass := TMyKeyboardButton;
end;

end.

Используя данное решение, можно сохранить функциональность стандартной клавиатуры TTouchKeyboard, одновременно убрав подсветку нажатых клавиш, что повысит уровень безопасности ввода паролей.

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

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

Проблема защиты вводимых паролей на сенсорной клавиатуре Vcl.Touch.Keyboard.TTouchKeyboard в Delphi решается путем изменения отображения нажатых клавиш для повышения безопасности.


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

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




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


:: Главная :: Пароли ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 12:50:42/0.0036308765411377/0