[DUVIDA] BANCO DE DADOS REMOTO
Galera andei lendo essa semana em como burlar sistemas feito em VB.Net...
Fiquei sabendo que tem como descompilar o sistema, também descobri que tem como ofuscar o .exe (que também já sei que não é 100%)...
O meu principal problemas nessa história toda e como fazer para conectar-se a um banco de dados MySQL remoto com a menor probabilidade de alguem conseguir ver a string de conexão...
Pensei em colocar a string em um Web Service, mas já vi que é como uma DLL só que Online (¬¬). Pensei na Web Service até pra facilitar caso eu mude o nome de usuário e/ou senha do Banco de Dados Remoto.
Qual forma você me indicariam para correr menos riscos (porque uma forma sem riscos não existe ^^)
Fiquei sabendo que tem como descompilar o sistema, também descobri que tem como ofuscar o .exe (que também já sei que não é 100%)...
O meu principal problemas nessa história toda e como fazer para conectar-se a um banco de dados MySQL remoto com a menor probabilidade de alguem conseguir ver a string de conexão...
Pensei em colocar a string em um Web Service, mas já vi que é como uma DLL só que Online (¬¬). Pensei na Web Service até pra facilitar caso eu mude o nome de usuário e/ou senha do Banco de Dados Remoto.
Qual forma você me indicariam para correr menos riscos (porque uma forma sem riscos não existe ^^)
O melhor, é usar a orientação a objeto mesmo no seu WebService, assim, tudo que o usuário vai ver são objetos com os dados que ele requisita ou requisitou. Não vai ver nadinha de string de conexão, configurações internas...
@KERPLUNK
Deixa eu ver se eu entendi...
Vamos a um exemplo.. Fazer um Login.
Eu envio do meu programa para o Web Service o que ele digitou como Usuario e Senha..
Faço a verificação dentro do próprio Web Service e retorno para o programa somente um True ou False....
Eu entendi assim...
Deixa eu ver se eu entendi...
Vamos a um exemplo.. Fazer um Login.
Eu envio do meu programa para o Web Service o que ele digitou como Usuario e Senha..
Faço a verificação dentro do próprio Web Service e retorno para o programa somente um True ou False....
Eu entendi assim...
GOSTEI do topico to pesquisando sobre isso...uso banco mysql online e minha app esta sendo disponiblizada pra varias pessoas...e dentro do meu progama existe uma classe com minha conexao e com meus dados....queria um tutorial sobre como fazer isso que vc falou @KERPLUNK...
@KERPLUNK
O que eu entendi tá no caminho do que o @KERPLUNK sitou?
O que eu entendi tá no caminho do que o @KERPLUNK sitou?
nao faça a conexao com o banco de dados direto no programa.
A conexao tem que ser feita direto no site (pagina que sera feito a consulta).
Por exemplo... na pagina www.seusite.com.br/relatorio.php deve ser feito a conexao e retorna o que voce quer mostrar no programa... no seu programa voce mostra só o que a pagina retornou.
Se fizer a conexao do banco de dados direto no programa, ainda mais sem criptografar a senha... voce corre um grande risco de seu bd online ser invadido
boa sorte..
A conexao tem que ser feita direto no site (pagina que sera feito a consulta).
Por exemplo... na pagina www.seusite.com.br/relatorio.php deve ser feito a conexao e retorna o que voce quer mostrar no programa... no seu programa voce mostra só o que a pagina retornou.
Se fizer a conexao do banco de dados direto no programa, ainda mais sem criptografar a senha... voce corre um grande risco de seu bd online ser invadido
boa sorte..
MAICONJG como se faz isso tem alguma tutorial ai ensiando ou algo que eu possa comecar..?
na verdade to pensando em fazer um Web Service e consumir ele em um windows form....
Da forma que eu to pensando e mais segura, de fazer tudo no web service e retornar so um True ou False...
Da forma que eu to pensando e mais segura, de fazer tudo no web service e retornar so um True ou False...
alguem sabe me dizer se esse http://www.red-gate.com/products/dotnet-development/smartassembly/download smartassembly que e um ofuscador de codigo serve pra isso que estamos tentando fazer?
Ofuscador não é 100% @KURTGU
Funciona assim:
Você vai ter um webservice. Dentro dele classes que representam os seus dados, que chamamos de entidades. Essas entidades servem para guardar os dados, imagine uma entidade com uma linha de uma tabela. Essas entidades podem ser agrupadas tanto em listas List(Of Entidade), ou mesmo em arrays.
Essas entidades ou listas são trabalhadas usando métodos. Por exemplo, você tem uma entidade [Ô]Cliente[Ô], dentro dela propriedades que representam os dados referentes à um cliente, que podem ser dados primitivos(integer, long, string, DateTime...) ou mesmo outras entidades, como por exemplo dados de contato, que por sua vez podem também ter outras entidades agrupadas e/ou propriedades com dados primitivos.
Para se trabalhar com essas entidades, usam-se outras classes que são chamadas Data Access Layer(ou camada de acesso a dados, ou ainda simplesmente DAL). Então essas classes DAL, são separadas por funcionalidade(geralmente). Então, terÃamos para nosso exemplo, uma classe chamada DALCliente. Dentro de DALCliente, terÃamos métodos que trabalham com o cliente, como um método(sub ou function) que insere e recebe por parâmetro uma entidade cliente, já preenchida com os dados que se quer inserir. Dentro desse método Inserir, a conexão é feita, o comando criado e associado com a conexão, parâmetros são passados para o comando e os valores são as propriedades da entidade que foi recebida como parâmetro e por fim, o comando é executado e se quiser, pode-se retornar algo para fins de confirmação, ou mesmo uma mensagem de erro, ou ainda uma entidade Cliente, com os mesmos dados preenchidos acrescidos do valor da chave primária, isso como exemplo, o retorno pode ser o que você quiser, até mesmo nenhum retorno, se assim preferir.
Existem ainda possibilidades de camadas intermediárias, como uma camada de regras de negócio por exemplo. Lembre do exemplo acima(do método que insere o cliente), existe a possibilidade de se ter ainda um outro método antes, em uma camada geralmente chamada de Business Layer(ou camada de negócio ou ainda simplesmente BL). A BL, é responsável por executar qualquer funcionalidade que se queira que seja executada antes do cliente ser inserido ou atualizado ou deletado, como um log ou validação de valores, ou verificação de crédito, qualquer coisa que se queira executar antes de o cliente ser manipulado. Essa camada que é chamada pela sua aplicação e é ela quem chama o método de inserção da camada DAL. Claro, nada impede de você expor o método de inserção da classe DAL e utilizá-lo sem a validação que ocorre na camada BL, mas isso exclui toda o propósito de se ter uma camada de regras de negócio, porém isso é decisão SUA. Quer deixar inserir o cliente, sem validar dados, sem ver crédito ou qualquer outra coisa que a camada de negócio faz? Beleza, sem problemas, SUA ESCOLHA.
Acho que já me alonguei demais, tenho um artigo explicando bem detalhadamente essa maneira de se trabalhar que para sua surpresa, se chama Programação Orientada à Objetos.
Você vai ter um webservice. Dentro dele classes que representam os seus dados, que chamamos de entidades. Essas entidades servem para guardar os dados, imagine uma entidade com uma linha de uma tabela. Essas entidades podem ser agrupadas tanto em listas List(Of Entidade), ou mesmo em arrays.
Essas entidades ou listas são trabalhadas usando métodos. Por exemplo, você tem uma entidade [Ô]Cliente[Ô], dentro dela propriedades que representam os dados referentes à um cliente, que podem ser dados primitivos(integer, long, string, DateTime...) ou mesmo outras entidades, como por exemplo dados de contato, que por sua vez podem também ter outras entidades agrupadas e/ou propriedades com dados primitivos.
Para se trabalhar com essas entidades, usam-se outras classes que são chamadas Data Access Layer(ou camada de acesso a dados, ou ainda simplesmente DAL). Então essas classes DAL, são separadas por funcionalidade(geralmente). Então, terÃamos para nosso exemplo, uma classe chamada DALCliente. Dentro de DALCliente, terÃamos métodos que trabalham com o cliente, como um método(sub ou function) que insere e recebe por parâmetro uma entidade cliente, já preenchida com os dados que se quer inserir. Dentro desse método Inserir, a conexão é feita, o comando criado e associado com a conexão, parâmetros são passados para o comando e os valores são as propriedades da entidade que foi recebida como parâmetro e por fim, o comando é executado e se quiser, pode-se retornar algo para fins de confirmação, ou mesmo uma mensagem de erro, ou ainda uma entidade Cliente, com os mesmos dados preenchidos acrescidos do valor da chave primária, isso como exemplo, o retorno pode ser o que você quiser, até mesmo nenhum retorno, se assim preferir.
Existem ainda possibilidades de camadas intermediárias, como uma camada de regras de negócio por exemplo. Lembre do exemplo acima(do método que insere o cliente), existe a possibilidade de se ter ainda um outro método antes, em uma camada geralmente chamada de Business Layer(ou camada de negócio ou ainda simplesmente BL). A BL, é responsável por executar qualquer funcionalidade que se queira que seja executada antes do cliente ser inserido ou atualizado ou deletado, como um log ou validação de valores, ou verificação de crédito, qualquer coisa que se queira executar antes de o cliente ser manipulado. Essa camada que é chamada pela sua aplicação e é ela quem chama o método de inserção da camada DAL. Claro, nada impede de você expor o método de inserção da classe DAL e utilizá-lo sem a validação que ocorre na camada BL, mas isso exclui toda o propósito de se ter uma camada de regras de negócio, porém isso é decisão SUA. Quer deixar inserir o cliente, sem validar dados, sem ver crédito ou qualquer outra coisa que a camada de negócio faz? Beleza, sem problemas, SUA ESCOLHA.
Acho que já me alonguei demais, tenho um artigo explicando bem detalhadamente essa maneira de se trabalhar que para sua surpresa, se chama Programação Orientada à Objetos.
Tópico encerrado , respostas não são mais permitidas