Preocupar-se com questões de segurança é algo muito importante no desenvolvimento de um bom Software. Isso independentemente se você desenvolve para o ambiente Desktop ou Web. Na parte de Web podemos citar problemas muito conhecidos como o famoso SQL Injection, que nada mais é do que a passagem de uma instrução SQL como parâmetro, de forma que o resultado da consulta torne a situação válida. Este caso pode ocorrer, por exemplo, quando uma instrução de Login de um determinado sistema é criada dinamicamente, concatenando a instrução SQL com um Edit ou TextBox, algo semelhante a seguinte situação:


  ‘ SELECT COUNT(IDUSUARIO) FROM USUARIO WHERE LOGIN = ‘ + TextBox1.Text + 
  ‘ AND SENHA = ‘ + TextBox2.Text;

Considerando o exemplo simples citado anteriormente, o usuário pode digitar a instrução com um nome de usuário e uma senha qualquer, no entanto, como a instrução é montada dinamicamente, pode-se preencher os campos com valores como: (‘A’ OR 1 = 1). Neste caso, provavelmente não existiria o nome de usuário e senha ‘A’, porém, a cláusula 1=1 faria com que o resultado fosse válido. É claro que este tipo de problema pode ser evitado com o uso de parâmetros como:

‘... WHERE LOGIN = :LOGIN AND SENHA = :SENHA’ 

Este é um simples exemplo de SQL Injection, que é uma situação muito comum principalmente no ambiente Web. Deixando a questão do SQL Injection de lado, mas ainda assim se tratando de segurança, uma parte muito interessante e que pode agregar grande valor ao software é a parte de criação de Log de informações.

Criar Logs das informações de uma tabela é algo que pode auxiliar muito nas questões de segurança e auditoria. Geralmente o log de dados está aplicado principalmente nas informações relativas à parte financeira (movimentação bancária, contas a pagar/receber, vendas) e a parte de controle de estoque. Isto porque as maiores ocorrências tratam-se justamente do desvio monetário e de produtos do estoque.

Problemas a parte, uma abordagem muito utilizada para a criação de Log de informações é através dos recursos de banco de dados. Neste caso, o responsável pelo banco de dados cria uma estrutura que representa basicamente as tabelas e os respectivos campos. Neste tipo de solução as informações referentes ao log de dados são alimentadas por meio de Triggers, nas quais fazem uso dos eventos de Insert, Update e Delete é claro. O objetivo deste Quick Update é abordar uma solução independente de banco de dados, onde o principal responsável por gerar o Log será o componente DataSetProvider.

...

Quer ler esse conteúdo completo? Tenha acesso completo