SocketConnection quot;segurançaquot;

Delphi

29/07/2006

boa pessoal... estou com um problemão... tenho uma aplicação n camadas, e tenho problemas com a segurança.. a app server é, RemoteDataModule + sqlConnection + sqlDataSet + DataSetProvider, na App Cliente tenho um SocketConnection, e ClientDataset, o problema é a segurança, pois a app server fica aberta a invasões, sabendo o ip do server qualuqer um cria um projeto em delphi liga um SocketConnection ao ip publico e pronto tem acesso ao banco... existe alguma forma de proteção com senha???, q mesmo em tempo de projeto naum tenha acesso aos componentes do RemoteDataModule?, naum tenho como colocar firewall pois o server é ip público e os clientes dinamico então a cada conexão muda o ip do cliente.... uso o delphi7 + firebird 1.5
grato pela ajuda dos colegas


Camilo

Camilo

Curtidas 0

Respostas

Camilo

Camilo

29/07/2006

help


GOSTEI 0
Dmalta

Dmalta

29/07/2006

Camilo,

Use os eventos [b:bfd903f239]BeforeGetRecords[/b:bfd903f239] e [b:bfd903f239]BeforeApplyUpdates[/b:bfd903f239] de [i:bfd903f239]TClientDataSet[/i:bfd903f239] e [i:bfd903f239]TDataSetProvider[/i:bfd903f239]. Ambos têm um parâmetro [i:bfd903f239]OwnerData: OleVariant[/i:bfd903f239] que você pode usar para transmitir do cliente ao servidor uma chave de acesso.

Você pode usar uma string qualquer ou mesmo um par de usuário e senha, que você irá checar nos eventos correspondentes do DSP.

Por exemplo:
procedure TForm1.ClientDataSet1BeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  OwnerData := VarArrayOf([´MyUserName´, ´MyPassword´]);
end;

Esse evento será chamado quando você der [i:bfd903f239]Open[/i:bfd903f239] no dataset cliente.

No servidor, o evento [i:bfd903f239]BeforeGetRecords[/i:bfd903f239] do [i:bfd903f239]TDataSetProvider[/i:bfd903f239] receberá o valor de [i:bfd903f239]OwnerData[/i:bfd903f239] atribuido pelo cliente. Aí você só precisa conferir os valores.

Note que mesmo assim alguém poderia usar um [i:bfd903f239]sniffer[/i:bfd903f239] para investigar o fluxo de dados. Para um nível maior de segurança, você poderia criptografar o conteúdo de [i:bfd903f239]OwnerData[/i:bfd903f239].

Espero que isso resolva seu problema!

Um abraço,


GOSTEI 0
POSTAR