miércoles, noviembre 09, 2005

Tremendas artimañas

En uno de los proyectos en los que estoy trabajando, los desarrolladores utilizan clandestinamente la herramienta TOAD para operar con la base de datos. Por un problema de licencias, se les ha pedido a los desarrolladores que no utilicen esta aplicación, y utilicen otros programas que, para lo que necesitan, cumplen la funcionalidad necesaria.

Parece que TOAD, de Quest, es una herramienta demasiado atractiva para algunos. Incluso ofreciendo alternativas gratuítas al respecto.

Tras comprobar que seguían utilizando TOAD, incluso contra las bases de datos de producción, decidimos implementar el siguiente trigger after logon:


create or replace trigger logon_program after logon on database
declare r_session v$session%rowtype;
begin
    -- Tomamos info de la sesion que se conecta
    select * into r_session
    from v$session
    where audsid=userenv('SESSIONID');
    
    if ((upper(r_session.program) like '%T%O%A%D%')
           or (upper(r_session.program) like '%TOAD%'))
    then
           raise_application_error(-20002,'Hacking detected. Application not supported.');
    end if;    
end;
/


No obstante, hay gente que se sigue resignando a usar sustitutivos a TOAD, y recurren a estratégias tan imaginativas como renombrar el ejecutable TOAD.EXE por SQLPLUSW.EXE

Vamos, casi ni se nota!


SQL> select sid, serial#, program, module, osuser from v$session;

       SID    SERIAL# PROGRAM                        MODULE                                        OSUSER
---------- ---------- ------------------------------ --------------------------------------------- --------------
         1          1 ORACLE.EXE                                                                   SYSTEM
         2          1 ORACLE.EXE                                                                   SYSTEM
         3          1 ORACLE.EXE                                                                   SYSTEM
         4          1 ORACLE.EXE                                                                   SYSTEM
         5          1 ORACLE.EXE                                                                   SYSTEM
         6          1 ORACLE.EXE                                                                   SYSTEM
         7          1 ORACLE.EXE                                                                   SYSTEM
         8          1 ORACLE.EXE                                                                   SYSTEM
        10       1293 jrew.exe                       jrew.exe                                      bbdd
        11        333 sqlplus.exe                    sqlplus.exe                                   bbdd
*       13        583 sqlplusw.exe                   T.O.A.D.                                      slaborda
        14          2 JDBC Thin Client               OWB Runtime Service - Infrastructure          SYSTEM
*       17       1091 sqlplusw.exe                   T.O.A.D.                                      slaborda
        18       1006 OraEdit.exe                    OraEdit.exe                                   bbdd
        19        385 QueryReporter.exe              PL/SQL Developer                              bbdd
*       22        819 sqlplusw.exe                   T.O.A.D.                                      slaborda
        23         30 PLSQLDev.exe                   PL/SQL Developer                              bbdd
        37         75 jrew.exe                       jrew.exe                                      fdomingues
*       44         21 FCBARCELONA5-REALMADRID0.exe   T.O.A.D.                                      slaborda
        53        196 JDBC Thin Client               JDBC Thin Client                              fdomingues
        61        413 JDBC Thin Client               JDBC Thin Client                              fdomingues
*       62         50 FCBARCELONA5-REALMADRID0.exe   T.O.A.D.                                      slaborda

22 filas seleccionadas.


Impresionante...

9 comentarios:

Anónimo dijo...

Ya te vale....

Anónimo dijo...

Ya te vale al cuadrado...

Anónimo dijo...

Bueno, notas de humor a parte yo quería darte las gracias por lo mucho que me ayudan tus pots. Te leo casi desde el principio y aunque estoy pensando en crear un blog del estilo del tuyo aún no me atrevo. Creo que hace falta saber mucho para hacer algo como esto.

Te felicito, porque sé que además de mí también ayudas a mucha más gente (todo el mundo de mi departamento está enganchado a tu blog).

Gracias Javier, sigue enseñándonos como hasta ahora.

PD.: me gustaría hacerte una consulta personal-profesional, pero mejor por mail ¿no?

Javier Morales dijo...

¡Gracias por tu comentario!.

Varias cosas:
- Ánimo con el blog!, seguro que hay nuevas opiniones o artículos interesantes para dar a conocer. Házmelo saber si te animas...

- La consulta personal-profesional, si es breve, bien puede ser un comentario, y si es más personal que profesional (o más extensa), mejor por mail a esta dirección.

Gracias!, de corazón! :)

Javier Morales dijo...

y... Luixy Toledo y Paquirrín...

...o debería llamaros
...SLABORDA!!!!. :)

Gracias también por no editar el hexadecimal del TOAD, o cambiar el module con el paquete DBMS_APPLICATION_INFO!! :)))

Anónimo dijo...

oing oing No seas Frikki...

Anónimo dijo...

Tus post son impresionantes.

Si eres un friki, de mayor quiero ser como tu ;)

Anónimo dijo...

JAVIER,
acabo de ver tu blog y lo encuentro muy bueno, se agradece el compartir tus conocimientos...

Te queria hacer la siguiente consulta:

necesito saber el programa desde donde se efectuo una accion sobre una tabla, tal como el ejemplo del toad. , pero mi problema es que no tengo acceso a las tablas de sistema, porque soy desarrollador...
se puede hacer esto de otra forma ???

[ [EBP]] dijo...

Hola Javier,
He ejecutado el Script como usuario SYS en la BD pero parece que no le hace caso, porque puedo seguir ingresando con el TOAD, sabes que puede estar pasando?
Gracias!