Fórum Segurança FireBird/Interbase #50912
06/05/2005
0
será que existe alguma maneira de meu arquivo de banco de dados(*.gdb) não abrir com o usuario sysdba e senha masterkey? Ou seja, quero proteger meu arquivo para que não seja copiado pra outra máquina, e assim poder ser aberto com o usuário e senha padrões.
Desde já agradeço, Fabricio.
Ifabricio
Curtir tópico
+ 0Posts
07/05/2005
Gandalf.nho
Gostei + 0
09/05/2005
Ifabricio
Grato, Ivan Fabricio
Gostei + 0
10/05/2005
Sergiomatos
Tenho um sistema comercial que na sua maior parte é instalada na mesma maquina que o firebird e utilizando o windows 98 (que nao protege os arquivos contra usuarios mal intencionados).
Hoje apos a instalacao do servidor altero a famosa senha masterkey de SYSDBA. Até aqui tudo bem. mas e se o usuario remover o firebird e instalar novamente, a senha masterkey volta a ficar ativa permitindo que um usuario com um pouco de conhecimento e utilizando ferramentas para manipular dados como o DBExpert, acesse o banco de dados e faça a festa, alterando dados que somente deveriam ser alterados via programa/sistema.
Antes de utilizar o firebird eu utilizava o access que dispoem de uma senha que é gravada no proprio banco de dados, o que resolvia o problema. Mas no firebird????
Cade a segurança neste caso...
Qual a solucao para este problema?
Acho o firebird um banco de dados fantastico, mas estou sem saber o que fazer.
Se alguem souber nos avise por favor.
Gostei + 0
11/05/2005
Weber
O problema maior é que a maioria dos programadores está comparando o firebird com o acess ou paradox entre outros.
O firebird é um sgdb e o programador tem que pensar na segurança no servidor e não no banco de dados. Por exemplo, se o banco de dados estiver em um servidor linux ou NT basta configurar a segurança no SO e pronto.
Além do mais, eu não vejo problema em o usuário ter acesso ao banco de dados, já que ele é o dono dos dados, nós programadores apenas somos donos do programa, nunca dos dados do cliente e para impedir que usuários estupidos entrem no banco de dados com ferramentas como Dbexpert, iboconsole e tal é só não deixar essas ferramentas na máquina.
Gostei + 0
11/05/2005
Rodolpho123
Se o usuário tem acesso direto ao arquivo do bd, ele pode simplesmente dar um clique no arquivo para selecionar e em seguida pressionar as teclas Shift+Del e fazer um estrago muito maior que apagar apenas alguns dados...
Gostei + 0
11/05/2005
Vinicius2k
Qualquer usuário que seja ´curioso´ o suficiente para saber utilizar uma ferramenta de administração do FB, também pode ir no google e pesquisar por ´Access password recovery´ e baixar um dos trocentos softwares que quebram a senha do seu banco access.
Não tem solução porque não é problema do FB. Como o colega weber disse, o problema é comparar e utilizar um SGBD como se fosse um Gerenciador de Arquivos como Access e Paradox.
Se vc desejar uma solução tão fácil de burlar quanto o password do Access basta seguir os passos.
1. Crie o seu banco de dados com um usuário diferente do SYSDBA e este usuário será o owner da base.
2. Crie uma role neste banco com o nome de ´SYSDBA´.
Pronto. O SYSDBA não mais consegue se conectar ao banco.
Este truque é amplamente conhecido dos desenvolvedores que trabalham com o FB e fácil de burlar. Vc só conseguiria eliminar os ´curiosos´.
Passa o tempo e não consigo entender porque é embutido no pensamento de quem inicia com o FB que ele tem um problema de segurança.
A regra é a mesma para todos os SGBDs que conheço. Seja o ROOT do MySQL, seja o SA do MS-SQL, etc... se a senha for conhecida, vc abrirá o banco.
T+
Gostei + 0
11/05/2005
Sergiomatos
Entendi como o FB funciona quanto a segurança, mas nao tenha como impedir o acesso fisico ao banco de dados.
Vc conhece uma forma de minha aplicação identificar se o banco de dados foi utilizado de forma indevida (DBExpert etc), onde possa detectar e impedir que o mesmo seja utilizado, semelhante o que acontece com o programa ´Sefip plataforma gráfica´?
Ou seja o usuário pode alterar os dados mas não poderá utilizar no sistema.
Se souber me da uma dica.
Gostei + 0
11/05/2005
Vinicius2k
O caso do SEFIP foi discutido neste tópico :
http://forum.clubedelphi.net/viewtopic.php?t=58129
Ainda não vi, mas pelos comentários que ´ouvi´, o que ele *deve* fazer é (ou pelo menos uma parte):
1. Abrindo a aplicação pela primeira vez, salva em ´algum lugar´ um hash do arquivo do banco de dados. Compara o hash salvo com o hash do banco, como o hash acaba de ser criado, a primeira comparação vai sempre passar true e a aplicação vai abrir normalmente.
2. Fechando a aplicação, atualiza o hash salvo.
3. Na próxima abertura, verifica se o hash que foi salvo anteriormente (quando a aplicação foi fechada), confere com o hash atual do arquivo. Se não conferir o banco foi alterado em um ambiente fora da aplicação.
Implementar algo neste sentido já ajudaria a segurança. Nunca implementei isto, mas com certeza, não 100¬ é seguro, assim como nenhuma forma de proteção é 100¬ segura.
T+
Gostei + 0
11/05/2005
Sergiomatos
Valeu pela dica, mas será q pode me dizer como capiturar o
´hash do arquivo do banco de dados´, não tenhe nem ideia de como fazer isso.
O delphi tem alguma funcão para isso?
Gostei + 0
11/05/2005
Vinicius2k
Para extração de hash vc precisará utilizar componentes de terceiros.
Os melhores componentes que já utilizei até hoje estão no pacote ´TurboPower LockBox´. Este pacote conta com implementações dos hashes MD5 e SHA-1 e diversos algorítimos de criptografia. É free e OpenSource. Com exemplos e documentação muito boas. Vale a pena conferir :
http://sourceforge.net/projects/tplockbox/
T+
Gostei + 0
11/05/2005
Sergiomatos
vou trabalhar nisso.
Ah,
Obrigado e Parabens pela grande atuação no Forum.
Te +
Gostei + 0
11/05/2005
Vinicius2k
:wink:
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)