Fórum SocketConnection quot;segurançaquot; #326474
29/07/2006
0
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
grato pela ajuda dos colegas
Camilo
Curtir tópico
+ 0
Responder
Posts
07/08/2006
Camilo
help
Responder
Gostei + 0
08/08/2006
Dmalta
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:
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,
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,
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)