Executando verificação de segurança...
2

Segurança de arquivo de texto em servidor php (hospedagem )

Olá a todos !

Odeio usar banco de dados !
gosto de armazenar os dados em arquivos de texto
do jeito que eu achar melhor,
porém sempre vejo dizerem que guardar dados sensíveis em arquivos .txt não é seguro e tal
Ok !
Eu poderia criptografar os dados mas
Onde eu guardaria a chave de criptografia ?

ONDE vcs guardam a chave que criptografa os dados a serem enviados ao banco de dados ??
E os dados de login no banco de dados ???????

POIS se meus dados em arquivos de texto sem criptografia não são seguros neste local
sua chave de criptografia e o login do banco de dados também não são !

Carregando publicação patrocinada...
2

Segurança é algo obtida pela competência da pessoa na área, não pela tecnologia. As maiores furadas de tecnologia são praticadas em banco de dados.

Algo em torno de 90% das perguntas sobre queries em bancos de dados postadas no Stack Overflow sofrem de SQL Injection. Mesmo você ensinando a pessoa, ela insiste em continuar fazendo daquele jeito. Várias respostas ensinam a fazer do jeito errado. Muito do que tem postado na internet ensina a fazer de forma insegura. As pessoas simplesmente não ligam, só importa funcionar. Por isso, a maioria dos supervisores são usados como minions e seus "proprietários" nem sabem. Foi o tempo de zoar o servidor, dá pra ter ganhos escondendo a invasão.

Se já é difícil fazer certo em um banco de dados que te ajuda, imagine fazer seguro em arquivos flat. Nem que seja muito bom nisso quer ter esse trabalho todo e correr o risco de dar um deslize.

Criptografia nada tem a ver com segurança. Ela só permite que alguém que tem acesso ao servidor não tenha acesso aos dados por fora do meio padrão utilizado. Ou seja, ela não dá acesso para alguém ler o dado de forma direta. A criptografia não tornará nada seguro. Só o fato de achar isso é um bom motivo para não tentar fazer nada que envolva segurança sem ajuda especializada.

Todo mundo pode fazer como quiser, mas sofrerá as consequências. Pode ser que seja nenhuma porque está fazendo uma coisa boba. Mas se sofrer, depois não adianta reclamar. Pode andar em moto sem capacete a mais de 200 por hora e passar sinal vermelho, mas depois que morre... E muita gente faz isso, achando que não vai acontecer com ela.

É extremamente difícil fazer algo seguro por conta própria, até os melhores programadores do mundo não querem ter esse fardo e usam o que tem pronto. Em muitos casos sem ajuda do sistema operacional fica bem difícil fazer algo. Mesmo com ele é possível burlar quando alguém tem acesso ao servidor.

Então o segredo é não dar acesso ao servidor, se der a criptografia ajuda, mas não resolve, se quiserem mesmo ter acesso aos dados será possível. Eu nunca criptografei nada em meus servidores, exceto senhas, com controle fornecido pelos bancos de dados, já que é uma tarefa muito complicada de fazer certo, porque eu sei que os dados não são tão valiosos assim, e se alguém quiser e tiver acesso ao servidor ela conseguirá o que quer. Minha preocupação é fazer com que o servidor não seja invadido.

Chave segura é estar em outro local. Ou seja, cada acesso precisará da chave vinda de fonte externa. E a comunicação precisa ser segura. Chave no mesmo local da porta, embaixo do tapete, não é segurança. Qualquer método será ruim. Isso vale para chave de banco de dados. Quase todo mundo tá muito preocupado com seus dados, mas a senha do DB tá lá no script PHP. Não é o fim do mundo fazer isso, mas aceite que seus dados estão desprotegidos, que a segurança está no servidor, não nos dados em si.

Se for uma aplicação local a segurança ficará limitada a não ser que dependa de algo que só usuário sabe para acessar. Ou seja, não é questão de onde coloca que dá segurança, o processo é extremamente mais complexo. A aplicação local é insegura por natureza. É como você parar o carro na garagem do bandido e querer impedir que ele entre lá dentro. Você pode dificultar, mas não impedir. Eu não vou perder meu tempo em dificultar algo que eu sei que será burlado. Mas se for fazer algo assim, farei com algo pronto feito por gente muito mais competente que eu. Eu só tenho 40 anos na área sem ter me especializado em segurança. Eu não sirvo para isso. E reconhecer isso é o melhor que posso fazer.

Eu sei fazer um banco de dados, até tenho um projeto de um, mas por diversão, seriamente eu prefiro usar um banco de dados pronto.

Até porque o banco de dados serve para muita coisa útil. Mesmo para algo muito trivial que precise de quase nada, pode ser melhor usar um SQLite do que o arquivo direto.

Eu também não sou o maior fã de algumas coisas de bancos de dados, mas reconheço que ele é muito melhor que tentar reinventar a roda. Minha recomendação é começar a gostar um pouco mais deles, aprender a fundo e usar o que for mais adequado. Porque se precisa realmente de dados criptografados, o banco de dados é fundamental. Não recomendo fazer na mão nem se você for um especialista no assunto, mas aí você já saberia disso. Eu sou super fã de fazer por conta própria sempre que trouxer alguma vantagem e for mais simples, odeio as modinhas de ficar enfiando tecnologias desnecessárias a toa, sou muito crítico nisso, mas vai por mim, você não vai querer fazer o que pretende. Só use um arquivo se for a coisa mais simples do mundo. Até para arquivo de configuração tem casos que um banco de dados já começa a compensar.

Em resumo (ChatGPTei :D), não é criptografia que dá segurança. Criptografia funciona bem para transmissão de dados ou dificultar acesso indevido quando tem acesso local, só para ganhar tempo para estrago muito grande acontecer. Ela sozinha não serve para muita coisa.

Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).

inserir a descrição da imagem aqui

2

Caraca, essa sem dúvidas é a melhor resposta que eu já li aqui na plataforma do tabnews, se todos se dedicassem para escrever dessa maneira, os artigos aqui seriam um milhão de vezes melhor, seu ponto de vista mudou o meu ponto de vista, muito massa teu jeito de pensar.

2

Obrigado. pretendo fazer muito mais. Eu sei que abalo algumas pessoas, mas receber esse tipo de feedback mas faz querer seguir em frente com meu pragmatismo.

1

Se eu entendi vc está me recomendando usar
Banco de dados
ok !

Para um script acessar esse BD ele precisaria do usuário e senha correto ?

Onde ficaria esse usuario é senha no servidor ?
Se é q eles ficam no servidor
Estou tentando entender isso !

Considerando uma hospedagem compartilhada
Me parece que há locais mais fáceis de serem invadidos do que outros inclusive pelo navegador.
Invadidos sem o login por que se a pessoa conseguir entrar com meu login como se fosse eu aí realmente não há nada q eu possa fazer

Mas considerando que o login ao serviço de hospedagem está seguro
Qual o local dentro da hospedagem php mais seguro contra invasões que não seja através do login ?

1

Leia resposta de novo. Mas eu vou destacar o ponto para voc~e:

Chave segura é estar em outro local. Ou seja, cada acesso precisará da chave vinda de fonte externa. E a comunicação precisa ser segura. Chave no mesmo local da porta, embaixo do tapete, não é segurança. Qualquer método será ruim. Isso vale para chave de banco de dados. Quase todo mundo tá muito preocupado com seus dados, mas a senha do DB tá lá no script PHP. Não é o fim do mundo fazer isso, mas aceite que seus dados estão desprotegidos, que a segurança está no servidor, não nos dados em si.

1

Desenhe pra mim !
Eu quero acessar meu BD através de um script no servidor.
VC disse que a chave vem de fora ok.
Mas como meu script ganha direito de solicitar essa chave externa?
Pra mim de qualquer forma terá q guardar no servidor algum dado de autenticação
ou estou errado ?

1

Está escrito na resposta. Tem que mandar a chave todas as vezes, em qualquer acesso, cada um terá que ter a chave previamente. O que é obviamente inviável em quase todos os casos, por isso ninguém faz e aceita que não terá essa segurança toda.

Tem três possibilidades:

  • Mandar de fora. Os bancos de dados fazem assim quando exige o usuário logar por conta própria - o que é inviável em sites, conforme relato acima. Fora uma interceptação ou um bug grave é 100% seguro.
  • Usar autenticação do sistema operacional - geralmente tem que ter controle sobre o ambiente, o que é raro em hospedagens, ainda mais compratilhada. Não é 100% seguro, mas se torna bem difícil sem acesso ao hardware.
  • Armazenar em qualquer lugar de qualquer jeito porque quem conseguiu acesso ali conseguirá fazer o que ela quiser - é o que todo mundo faz, só precisa estar ciente disso em vez de achar que está seguro, como muita gente acha. Se adotar esta técnica e achado que está seguro porque fez isso ou aquilo está vivendo em ilusão.
1

"tem q mandar a chave todas as vezes"

quem ????????????
o script é automático ele pode ser executado a qualquer momento!
como ele ganharia permissão para buscar uma chave externa ?

1
1

Se gosta de guardar em aquivos dentro do server use SQLite ele faz exatamente isso!
Colocar criptografia vai ser bem pesado para seu servidor!

A relação de segurança com banco de dados não esta correta.
Se alguém com conhecimento entra no seu server e lá tem mysql/mariaDB

Ambos quardam os dados em arquivos... que se baixados vão ser abertos facilmente!
Eu já tive um problema uma vez com um banco de dados e tive que mexer na mão nos arquivos dele, foi horrivel kkk

Alias se o invasor pegou a senha de acesso ao banco de dados já era!

Usar um banco de dados é mais para velocidade e garantia de dados!
Eles tem ferramentas que otimizam a busca e que dão segurança na escrita.

Não tem tanto a ver com segurança dos dados de invasores!
Embora possa ajudar um pouco!

1

Não é sobre guardar no Server
É sobre ter liberdade na forma de armazenar, procurar e editar que acredito que o arquivo .txt está mais próximo.

Mas sobre O liteSQL
o local onde ele guarda os dados é seguro ? não da para ser invadido ?

Pois estou procurando esse local para guardar os arquivos .txt com dados sensiveis

1

Eu errei o nome o correto é SQlite, ele guarda no mesmo servido que ele esta instalado!
Ou seja se o SERVIDOR tem brecha já era meu amigo!
https://sqlite.org/index.html

Não vejo mal algum em você utilizar um arquivo TXT.
Agora dados sensiveis como
Senhas, dados de cartão etc. Sempre criptografe e tanto faz ser num txt ou num banco de dados comum.

Dados sensiveis você criptografa em qualquer tipo de forma que você guarde ele!

1

E onde ficaria a chave de criptografia ????????????

Se for no servidor
não adiantaria a criptografia
pois se o invasor conseguir acessar os dados também conseguiria acessar a chave de criptografia.