Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Evitar programas que revelan passwords y activan botones. (https://www.clubdelphi.com/foros/showthread.php?t=67844)

rhino0nt 09-05-2010 03:28:55

Evitar programas que revelan passwords y activan botones.
 
Mi duda, es la siguiente, en una aplicación que realice para bases de datos con niveles de seguridad comence a notar que un usuario estaba realizando funciones que tenía deshabilitadas, al revisar el equipo luego de dar muchas vueltas por otras partes me encuentro con que esta persona tenía instalado un programa llamado VeoVeo, algo viejo pero que básicamente aparte de mostrar las contraseñas ocultas por asteriscos (que no le han funcionado de nada pues las guardo con MD5), además le permite activar y mostrar botones y opciones de menú que han sido deshabilitadas por no tener el usuario acceso a dichas funciones.

Existe alguna forma de evitar este comportamiento con la API o alguna manera de detectar este tipo de programas. De entrada bloquee las funciones más delicadas revisando nuevamente las opciones al abrir las pantallas.

De antemano gracias y un saludo a todos.

Lord Delfos 09-05-2010 12:23:09

Bueno, con el tema del password no hay nada que hacerle. El TEdit ya es así y punto. Quizás debas buscar algún componente especializado que no funcione igual que el edit. Pero el comportamiento del edit no se puede cambiar.

Con respecto a las opciones de menu... pues a mí no me andan. Es decir, puede que queden habilitadas, pero la propiedad Enabled me queda en False, así que al hacer click en el menú, no pasa nada. Esto es en Delphi 7, así que puede cambiar, quizás sea un bug de D7.

Con los botones, menues y otros componentes quizás sería mejor que crees tu propia propiedad llamada Habilitado, y que maneje la habilitación por su cuenta... Algo así:

Código Delphi [-]
type TButton = class(StdCtrls.TButton)
  private
    FHabilitado: Boolean;
    procedure SetHabilitado(Valor: Boolean);
  public
    property Habilitado: Boolean read FHabilitado write SetHabilitado;
end;


procedure TButton.SetHabilitado(Valor: Boolean);
begin
  Enabled:= Valor;
  FHabilitado:= Valor;
end;


procedure TForm1.btn1Click(Sender: TObject);
begin
  if TButton(Sender).Habilitado then // <-- Acá evitás el problema.
    ShowMessage('a');
end;

Se podría usar el truquillo de la "declaración que pisotea" para redefinir la clase TButton y no tener que andar haciendo malabares en cada form.

Y siempre usar el Habilitado y no el enabled para habilitar o deshabilitar el botón.

Es un poco engorroso, porque tendrías que hacerlo con todas las clases que quieras bloquear, pero... Otra cosa no se me ocurre. :)

Qué sé yo, otra no se me ocurre... Esperemos a ver qué dicen los compañeros.

Saludos.

duranguenze 04-06-2010 22:28:24

O mejor aun, has un chequeo cada vez que de click en un menu, o oculta el menu, asi no podra acceder nisiquiera al menu visible deshabilitado, y no podria activarlo puesto que no tiene a donde apuntar, este tipo de usuarios son una lata ya que creen que estan haciendo una gracia, pero si se les quita ciertas acciones es por algo.

Neftali [Germán.Estévez] 07-06-2010 11:37:07

La solución viene por no crear no que no se debe utilizar. Es decir, que lo que no está no se puede utilizar.
A veces esa opción es complicada, así que optamos por la desactivar/ocultar determinadas acciones, pero como has comprobado no siempre son efectivas.

Dependiendo de cómo actives/ocultes esas opciones lo más sencillo es pasar esa comprobación al momento de ejecutar una acción o elemento del menú.

Si esto no es posible, utiliza un procedimiento al iniciar el programa para recorrer las opciones del menú y cambiar el TAG, por ejemplo, a las que están desactivadas a -1.

Al ejecutar, compruebas el TAG (que no debería ser -1). Quien dice el TAG, dice crearte una lista en memoria con las desactivadas y comprobar antes de ejecutar que está o no en la lista.

A parte de eso (y si detectas que están ejecutando acciones no permitidas), yo optaría por sacar un mensaje en pantalla tipo...

"El sistema ha detectado que está ejecutando una acción deshabilitada. Usted no debería ejecutar esta opción. Si es un error consulte con el Administrador del sistema. Le informamos además de que esta acción no-permitida/incorrecta queda registrada junto con el nombre de usuario que la realiza."


Algo así como..."Te piensas que eres muy listo, pero que sepas que sé lo que estás haciendo y te tengo fichado..." ;)


La franja horaria es GMT +2. Ahora son las 22:10:36.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi