Por que as senhas devem ser criptografadas se estiverem sendo armazenadas em um banco de dados seguro?


78

Eu tenho um serviço web. No momento, tenho senhas armazenadas em texto sem formatação em uma tabela MySQL no meu servidor. Sei que essa não é a melhor prática e é por isso que estou trabalhando nela.

Por que as senhas devem ser criptografadas se estiverem sendo armazenadas em um banco de dados seguro? Sei que, se alguém invadir meu banco de dados, obterá a senha de todos. Mas tenho outros problemas se alguém entrar no meu banco de dados, por exemplo, excluir dados.

O cenário em que consigo pensar é que você está hackeado. Você restaura um banco de dados há algumas horas e está tudo bem. No entanto, se suas senhas estiverem em texto sem formatação ... O ladrão tem todas as senhas e você deve redefini-las. Aborrecer seus usuários.

Se as senhas foram criptografadas, você pode restaurar o banco de dados anterior. Este pensamento está correto?


124
Eu daria um passo adiante. Não é suficiente criptografá-lo. Você gostaria de misturar. Dessa forma, nem você deve saber quais são as senhas em texto sem formatação dos seus usuários.
Santa

67
@ Santa Hashing da senha não é suficiente. Você tem que adicionar um pouco de sal para fazer a receita boa o suficiente ...
Bakuriu

16
Consulte esta postagem relevante do Security.StackExchange: como fazer o hash de senhas com segurança?
Adi

10
O DBA insatisfeito diz ... selecione * do usuário e depois vende essa lista por pagamento de indenização. Nada está seguro.
Jon Raynor

Respostas:


194

Primeiro, você deve ser mais livre com direitos de acesso somente leitura do que leitura e gravação. Pode ser possível que um hacker tenha acesso aos seus dados, mas não possa editá-los.

Mas, muito mais importante, isso não é sobre você. O fato de você poder ser ferrado se alguém tiver acesso total ao seu banco de dados é irrelevante. Muito mais importantes são os dados do usuário.

Se você recuperar seu banco de dados, o hacker ainda terá acesso à conta do usuário.

E quem sabe o que mais? E se eles usarem a mesma senha no Google? Ou PayPal? E se isso der ao hacker acesso ao nome de solteira da mãe ou aos quatro últimos dígitos do cartão de crédito?

E se isso os colocar em outras contas? Não deixe passar um hacker para passar por um sistema de suporte ao usuário e obter mais informações .

Apenas ... apenas não. Essas são as informações privadas do usuário e você não precisa vê-las. É também a sua reputação. Criptografá-lo.

EDIT: Um comentário extra, para salvar qualquer futuro leitor de ler todas as respostas e comentários ...

Se você quiser criptografar (no sentido mais estrito), precisará usar um par de chaves pública / privada , o que é bom, mas torna a vida um pouco mais difícil para você e seu usuário.

Uma solução mais simples e eficaz é saltar aleatoriamente e hash a senha. Hashing sozinho não é suficiente; se o usuário usar uma senha comum, ela aparecerá em tabelas de hash reverso, que estão prontamente disponíveis com uma simples pesquisa na Internet.


89
Ou melhor, hash-lo!
precisa saber é o seguinte

29
Este. "Tenho outros problemas se alguém entrar no meu banco de dados". É o seu banco de dados, você espera ter problemas se for invadido. Mas, ao armazenar senhas em texto sem formatação, você cria problemas para todos os usuários, potencialmente, para todas as outras contas. Quantas pessoas você acha que realmente usam uma senha diferente em cada site?
precisa saber é o seguinte

13
Por favor, siga o conselho de Blorgbeard, talvez leia isso . A criptografia de senhas não fornece proteção quando o servidor da web foi comprometido. A chave para descriptografar as senhas deve ser armazenada em algum lugar no servidor. Hash as senhas significa que, mesmo que alguém tenha acesso total à máquina, elas não poderão recuperar as senhas facilmente.
Slicedpan

7
Por que você precisaria criptografar senhas se elas não agregam valor ao seu sistema? Em que momento você precisará descriptografar senhas, exceto para comparação? @pdr, você não deveria dizer ao OP para criptografar, deveria dizer a ele para fazer sal e hash.
precisa saber é o seguinte

4
Você também deseja hash as respostas para suas perguntas de recuperação de senha. Caso contrário, eles também podem ser usados ​​para acessar outros sites, assim como senhas.
Zan Lynx

64

Se você for invadido, poderá restaurar o site a partir de backups e corrigi-lo. Mas o hacker ainda tem senhas para as contas de todos! Existem exemplos documentados do mundo real disso (Sony, Linked-in), em que se as tabelas de senhas tivessem sido corretamente misturadas e salgadas, seria mais fácil proteger e restaurar o sevice rapidamente.

Provavelmente, é uma boa ideia supor que você será invadido e projetar sua estratégia de backup e criptografar quaisquer dados confidenciais com essa suposição em mente. E não é apenas contra hackers que você precisa se proteger. Funcionários insatisfeitos, desonestos ou sem noção podem dar senhas em texto simples.

Sem hash, você terá que desativar o acesso de todos até que eles alterem sua senha (o que, mesmo se possível, será uma enorme dor de cabeça para todos). Se as senhas tivessem sido hash e salgadas, você poderia restaurar o serviço da Web e seria muito mais difícil para um invasor obter acesso às contas das pessoas.

Uma senha salgada e com hash corretamente é basicamente unidirecional. Você não pode adivinhar facilmente a senha da senha com hash. Mesmo você, como o provedor de serviços não será capaz de adivinhar, você só pode redefini-lo.

Além disso, como Elin disse, não tente usar seu próprio hash (ou criptografia). Use uma biblioteca padrão.



13
+1 por mencionar funcionários insatisfeitos. É fácil ignorar quando você é uma loja individual ou uma pequena empresa, mas, eventualmente, você terá pessoas trabalhando com os dados que você não examinou pessoalmente.

2
Escrever o foreach para percorrer uma lista de usuários e depois hash suas senhas é o trabalho de alguns minutos e, francamente, 4000 é quase nada. php.net/manual/en/function.hash.php
Elin

3
Você continua alternando entre os termos "criptografar" com "hash e salt" @ david25272. Não confunda os dois, que são totalmente diferentes. Agora, o OP está procurando um algoritmo de criptografia, e não um algoritmo de hash. Além disso, é "sal e hash", não "hash and salt". Você não pode salgar depois de fazer o hash.
precisa saber é o seguinte

1
Também @phpmysqlguy, leia minha resposta para obter sugestões sobre algoritmos de salga e hash .
precisa saber é o seguinte

36

Mas tenho outros problemas se alguém entrar no meu banco de dados, ou seja, excluir dados.

Não se trata dos problemas que você tem, mas dos problemas que isso pode causar a todos os outros usuários. Trata-se de remover a tentação (ou pior ainda, a responsabilidade potencial) de as pessoas que trabalham no site abusarem dos dados armazenados lá.

Veja, mesmo que as pessoas devam usar senhas diferentes em sistemas diferentes, a realidade é que não .

... e como é muito fácil usar hash de senhas, você não tem desculpas para não seguir as práticas recomendadas do setor.


9
Você faz o que eu acredito ser o ponto mais importante: VOCÊ e seus funcionários não devem ter acesso à senha do usuário. Quem se importa com o hacker, são as pessoas que mantêm os dados que preocupam os usuários.
Adam Davis

1
+1 pelo fato de que, como desenvolvedor / administrador, você não deve ter acesso às senhas de seus usuários. Isso já é razão suficiente.
Matt

21

Ataques visíveis, como a exclusão de dados, geralmente são coisas de amadores e são as menores preocupações. Uma das primeiras coisas que um invasor experiente fará é tentar obter acesso legítimo; portanto, mesmo se você corrigir a vulnerabilidade original que ele usou, ele ainda poderá entrar. Ele fará todo o possível para evitar chamar a atenção para si mesmo até que realiza o que ele deseja. Ao deixar as senhas unidas, você potencialmente facilitou muito o trabalho dele. Você também dificultou a detecção e o isolamento de seu futuro comportamento malicioso.

Além disso, nem todos os compromissos oferecem acesso total ao shell. E se a vulnerabilidade usada por um invasor for apenas uma injeção SQL somente leitura na userstabela? Deixar senhas unidas apenas lhe dava acesso total.

Além das razões dadas por outras respostas sobre sua responsabilidade de proteger os dados de seus usuários. O que quero dizer é que não são apenas os usuários que têm algo a perder.


18

Eu tenho que postar uma resposta aqui sobre uma falácia na própria pergunta. Você está perguntando se as senhas devem ser criptografadas. Ninguém criptografa senhas; ninguém, com exceção de serviços e programas como o Firefox Sync e Roboform, cujo único objetivo é criptografar senhas.

Vamos dar uma olhada nas definições:

Na criptografia, a criptografia é o processo de codificação de mensagens (ou informações) de forma que somente as partes autorizadas possam lê-las.

E hash:

Uma função hash é qualquer algoritmo que mapeia dados de comprimento arbitrário para dados de comprimento fixo.

Em outras palavras, a criptografia é uma conversão bidirecional e o hash é uma conversão unidirecional , portanto, a menos que você decifre para visualizá-las mais tarde, isso não é criptografia.

Além disso, não apenas mistura, sal ! Leia esta página inteira antes de fazer o hash de suas senhas.

Quanto aos algoritmos de hash, nos quais o OP está analisando agora, eu sugeriria qualquer uma das variedades SHA-2 de última geração, como SHA-384 ou SHA-512.

E certifique-se de usar rodadas de hash . Não faça hash uma vez, faça hash várias vezes.

Considere ler esta página para proteger mais seu processo de login.

Segundo, seu banco de dados nunca pode ser seguro o suficiente. Sempre haverá brechas na segurança e riscos em constante evolução. Você deve seguir a Lei de Murphy e sempre se preparar para a pior eventualidade.

Os outros pontos destacados pelo pdr são exatamente o que mais eu diria: pessoas que usam a mesma senha para todos os sites, hackers que usam engenharia social para obter mais informações, etc. etc.


+1 para hash mais sal. Cracking hashes sem sais é sooo fácil.
Code Maverick

3
Você sabe o que está do outro lado de uma mesa arco-íris @CodeMaverick? Um pote de ouro.
precisa saber é o seguinte

No contexto do hash de senha, o MD5 não tem vulnerabilidades conhecidas além de ser rápido, e isso também se aplica ao SHA-2. Usar uma construção lenta e iterada é muito mais importante do que escolher o SHA-2 em vez do MD5.
CodesInChaos

4
"Leia esta página inteira antes de colocar suas senhas em hash" - essa página menciona que você não deve usar rodadas de hash, mas um método de hash que foi projetado especificamente para ser o mais lento possível, como PBKDF2.
Jhominal

2
Use SCrypt ou PBKDF2, ambos projetados para serem muito caros para desempenho em termos de memória ou CPU. Use um sal gerado aleatoriamente que você armazena no registro do usuário. Não execute várias rodadas de hash, isso apenas leva a problemas de colisão.
tom.dietrich

14

Há um princípio importante em jogo aqui. Há apenas uma pessoa que tem alguma empresa que sabe a senha de um usuário. Esse é o usuário. Nem a esposa / marido, o médico ou mesmo o padre.

Definitivamente, não inclui o programador, administrador de banco de dados ou técnico de sistema responsável pelo serviço que está usando. Isso cria um desafio, pois o programador tem a responsabilidade de receber a prova de que o usuário realmente conhece a senha, que é um problema não trivial a ser resolvido de maneira pura.

A solução pura é ter um mecanismo em que o usuário seja desafiado com alguns dados novos e imprevisíveis e, em seguida, retornar uma resposta que seja baseada nesses dados e em sua senha. Uma implementação disso seria pedir ao usuário para assinar digitalmente alguns dados gerados recentemente com sua assinatura digital, e poderíamos provar matematicamente que eles usaram o mesmo par de chaves criptográficas que eles usaram para criar a conta originalmente.

Na prática, as soluções puras exigem infraestrutura e processamento substanciais do lado do cliente e, para muitos sites, isso geralmente não é apropriado para os dados que estão sendo protegidos.

Uma solução mais comum seria:

No ponto em que uma senha é recebida pela primeira vez no aplicativo, a senha é passada para a função hash, juntamente com o valor aleatório de 'salt' do aplicativo na função hash.

A sequência original é substituída na memória e, a partir deste momento, o hash salgado é armazenado no banco de dados ou comparado com o registro do banco de dados.

Os principais aspectos que fornecem segurança aqui são:

  1. O conhecimento do hash não fornece autenticação diretamente.
  2. O cálculo reverso da senha do hash é impraticável.
  3. O uso de tabelas arco-íris (longas listas de senhas e seus hashes calculados) é mais desafiador porque o hash resultante depende do nome de usuário e da senha.

6
Em geral, é preferível usar um sal aleatório em vez do nome de usuário.
CodesInChaos 30/01

Uau, boa captura @CodesInChaos. Eu não percebi isso na minha primeira leitura da pergunta. Sim, seu sal deve ser gerado aleatoriamente. Não precisa ser um blob maluco armazenado no MySQL (e isso seria ruim, porque não seria portátil). Caso contrário, +1 por dizer que apenas o usuário deve saber a senha do usuário.
precisa saber é o seguinte

Ok, resposta atualizada para sugerir que o aplicativo tenha seu próprio valor aleatório de sal.
Michael Shaw

4
Não, o aplicativo também não possui um valor de sal. Deve haver um valor de sal diferente e fortemente aleatório para cada hash armazenado. (Você armazena o sal ao lado desse hash.) É isso que protege contra ataques estatísticos. Se você usou o mesmo hash para todo o aplicativo, o mesmo texto sem formatação hashes para o mesmo valor. Isso é muito pior do que usar o nome de usuário como hash.
Ben Voigt

Não é um serviço da Web, mas a autenticação de par de chaves SSH usa a solução 'pura', onde o servidor armazena uma chave pública e o usuário se autentica com uma chave privada.
cpast

10

Você precisa "criptografar" (na verdade, "hash", para uma noção adequada de hash)) as senhas como uma segunda camada de defesa : isso visa impedir que um invasor, que teve uma visão apenas de leitura do banco de dados, aumente isso no acesso de leitura e gravação e, precisamente, começam a alterar os dados. As violações parciais somente leitura acontecem no mundo real, por exemplo, através de algum ataque de injeção SQL de uma conta com acesso somente leitura ou recuperando um disco rígido descartado ou uma fita de backup antiga de um dumpster. Escrevi longamente sobre esse assunto .

Quanto às formas adequadas de hash de senhas, consulte esta resposta . Isso envolve sais, iterações e, acima de tudo, não inventar seus próprios algoritmos (a criptografia caseira é uma receita certa para o desastre).


+1 por saber a diferença entre criptografia e hash.
NobleUplift

8

Não vou repetir o que outras pessoas disseram, mas supondo que você tenha o PHP 5.3.8 ou melhor, você deve usar o nativo do PHP bcryptpara armazenar suas senhas. Isso está embutido no PHP. Se você possui PHP 5.5, pode usar a melhor constante de senha disponível. Você também pode usar uma biblioteca para fazer com que o 5.3.8 ou melhor se comporte como o 5.5.

Pergunta sobre estouro de pilha Como você usa o bcrypt para hash de senhas no PHP? explica e as outras respostas explicam mais. Por favor, não mexa tentando fazer isso sozinho.


2
Infelizmente, estou usando o PHP 5.3.3 para que suas sugestões não se apliquem
Phpmysqlguy

4
5.3.3 a 5.3.8 é grande parte de uma atualização?
Gbjbaanb

Alguma chance de você estar na Red Hat? Porque eles suportaram a correção para criptografar. Caso contrário, use SHA256 em vez de brcypt.
Elin

1
Criptografia e hash são coisas diferentes. Senhas hash, não as criptografam. Você nunca precisa conhecê-los. Você só precisa que o usuário possa usar a senha para provar quem ele é. Hashing (com sal) permite isso. Criptografia, esp. a criptografia simétrica está incorreta, pois permite a recuperação de senhas.
Paul de Vrieze

A única coisa que vou acrescentar é que a coisa boa sobre a função password_hash () no php 5.5+ é que ela lida com a salga e assim por diante de maneira sadia por padrão. Antes disso, você precisa ir em frente e usar algo como a biblioteca do ircmaxell que a suporta (ele escreveu a implementação 5.5). Não assuma que você pode gerar um sal aleatório sozinho. É muito, muito difícil e é melhor deixar para especialistas; é realmente fácil obter resultados aleatórios, mas não uniformes, que são exploráveis.
Elin

7

Concordo com a resposta do pdr, pelas razões indicadas nessa resposta.

Eu acrescentaria o seguinte: você deve fazê-lo porque é fácil e geralmente aceito como prática recomendada para qualquer aplicativo. Mais especificamente, as senhas sempre devem ser salgadas e colocadas em hash antes de serem gravadas em qualquer armazenamento persistente. Aqui está uma boa referência sobre a importância de salgar e escolher um bom hash criptográfico (que também fornece código-fonte gratuito em vários idiomas populares): https://crackstation.net/hashing-security.htm

A pequena quantidade de tempo extra de desenvolvimento vale a proteção que ele oferece aos usuários e à sua reputação como desenvolvedor.


+1 por mencionar salga e hash, além de não mencionar criptografia, que nem sequer pertence a esta pergunta.
precisa saber é o seguinte

2

O cenário em que consigo pensar é que você está hackeado.

Outro cenário em que você precisa pensar: alguém gastou US $ 100 no seu DBA (ou quem quer que possa executar consultas selecionadas no seu banco de dados), para fornecer as senhas dos usuários. Ou engenheiros sociais, algum estagiário para fazer isso.

Em seguida, eles usam essas senhas para fazer login no Gmail do usuário ... ou no site de comércio ... (porque as pessoas são ... menos que inteligentes, digamos - e usam a mesma senha nos sites).

Em seguida, o usuário irado processa sua empresa por expor sua senha.


NINGUÉM (incluindo as pessoas da sua empresa) deve poder ler a senha em texto sem formatação. Sempre. Não há negócios legítimos ou necessidade técnica para isso.


2

Por um lado, mesmo os administradores de banco de dados não devem ver as senhas dos usuários. Colocá-los em hash impedirá isso, caso o administrador decida procurar uma senha e fazer login na conta de seus usuários.


1
isso não adiciona nada digno ao que já foi publicado em respostas anteriores
gnat

3
+1. Ele realmente disse "hash", em vez de criptografia, como muitos outros. Além disso, ele contradiz diretamente o OP, que diz que deseja que as senhas em texto puro entrem nas contas de outros usuários.
precisa saber é o seguinte

0

Bem, é surpreendente que ninguém tenha mencionado isso ainda, mas e a segurança FÍSICA do seu banco de dados?

Você pode ter a melhor segurança de TI do mundo, mas isso não impede ninguém que possa obter acesso físico à sua mídia de armazenamento. O que acontece quando sua equipe vence o Superbowl hoje à tarde e surge um pequeno tumulto no centro da cidade, onde fica o seu escritório / provedor de hospedagem? (Como Seattle e Denver, duas grandes áreas de TI nos EUA, não considero isso irracional). A multidão invade seu prédio e, enquanto as autoridades estão sobrecarregadas, alguém pega um pouco do seu hardware com um banco de dados que contém senhas em texto não criptografado?

O que acontece quando os federais aparecem e apreendem seu equipamento porque algum executivo de alto nível estava usando sua posição na empresa para executar operações ilegais de ações? Os federais usam essas senhas para investigar seus clientes, embora não tenham feito nada de errado. Então eles percebem que foi VOCÊ que os deixou vulneráveis.

O que acontece quando seu departamento de TI esquece de limpar as unidades RAID antigas que mantinham seu banco de dados quando faz substituições agendadas antes de "distribuir" as unidades antigas para estagiários e, em seguida, seus colegas de quarto descobrem o que foi deixado para trás e descobrem que podem " vendê-lo e nunca o rastrearam até eles?

O que acontece quando seu servidor de banco de dados explode uma placa-mãe, a TI restaura uma imagem no seu novo servidor e a "carcaça" do servidor antigo é lançada na pilha de reciclagem? Essas unidades ainda estão boas e esses dados ainda estão lá.

Qualquer arquiteto decente sabe que a segurança não é algo em que você "se apega" mais tarde com firewalls e políticas de operações. A segurança deve ser uma parte fundamental do design desde o início, e isso significa que as senhas são unidirecionais, NUNCA transmitidas sem criptografia (mesmo dentro de seus próprios datacenters) e nunca podem ser recuperadas. Qualquer coisa que possa ser recuperada pode ser comprometida.


-1

Deixando de lado o caso de seu banco de dados ser invadido: Como cliente, não gostaria que você soubesse minha senha. Sei que você pode facilmente pegar a senha quando ela chega a um pedido, mas tive uma sensação melhor quando você não a tem à disposição para consultar quando quiser.


1
Na verdade, se o OP desse um passo adiante e criptografado em JavaScript, o hash seria enviado por fio e nunca seria visto na solicitação.
precisa saber é o seguinte

1
Nesse caso, um invasor também precisará enviar o hash pelo cabo também. O hash funcionaria apenas como uma senha sofisticada, mas não criptografada, não é? (Edit: não se tivesse de ser salgado com um sal diferente de cada vez, e o sal veio do servidor eu acho.)
RemcoGerlich

1
@RemcoGerlich O conceito-chave é conhecido como nonce, que é usado para evitar um ataque de repetição .

-1

Se as senhas forem armazenadas em texto sem formatação, isso significa que são conhecidas pelo usuário e por quem quer que tenha acesso a essa tabela. A idéia toda sobre a implementação de usuários e senhas é garantir que uma determinada sessão em seu sistema pertença a essa pessoa, por motivos de privacidade e segurança.

Se um nome de usuário / senha é conhecido por um grupo de pessoas, torna-se inútil identificar uma pessoa de forma inequívoca e isso cria muitos cenários possíveis para roubo de identidade, fraude ...

É por isso que as senhas são armazenadas usando protocolos de criptografia assimétrica, para garantir que você possa validá-las sem poder lê-las.


2
Quem armazena senhas usando criptografia assimétrica? Essa é a criptografia de chave pública, o que significa que, mesmo depois de criptografar minha senha, ela pode ser descriptografada e lida se alguém obtiver minha chave privada. Com o hash, eu e apenas eu conheço minha senha (a menos que eu a anote ou coloque em um gerenciador de senhas, onde na verdade é criptografia assimétrica).
precisa saber é o seguinte

Por favor, verifique a página da wikipedia para obter criptografia de chave pública: en.wikipedia.org/wiki/Public-key_cryptography "Criptografia de chave pública, também conhecida como criptografia assimétrica"
Alpha1983

2
... sim, eu disse isso using asymmetric encryption? That's public-key cryptography. O que você quer com isso?
precisa saber é o seguinte

-1

Eu acho que há uma falha fundamental na questão. O fato é que não existe um "banco de dados seguro". Deve-se considerar que existem falhas em seu sistema em algum lugar que podem permitir que usuários mal-intencionados acessem dados arbitrários em seus servidores. Heartbleed é um excelente exemplo, sendo uma façanha que esteve na natureza por mais de dois anos antes de ser notada pelos pesquisadores. Você pode ter feito tudo o que sabe para proteger os dados, mas não pode responder por todos os outros softwares que você está usando em seus servidores e pelas maneiras complicadas com que eles interagem.

Se alguém se interessar por você, você será hackeado. É importante fazer o possível para evitar ser invadido em primeiro lugar, mas também para atenuar os danos causados ​​quando isso acontece, colocando o maior número possível de obstáculos. Hash suas senhas. Não é tão difícil de configurar, e você está prestando um desserviço a seus usuários por não levar a privacidade deles a sério. É arrogância pensar que você está de alguma forma mais bem protegido contra ataques maliciosos do que empresas como Yahoo , Sony ou Target , que foram hackeadas.


1
isso parece não oferecer nada de substancial em 14 respostas anteriores #
3015

Não concordo, caso contrário não o teria publicado. Não tenho certeza de que vejo como o fato de você fazer comentários negativos aumenta a conversa, além de desencorajar as pessoas a participar.
lobati

bem, não sei se você leu outras respostas antes de postar as suas, mas pela minha leitura todos os pontos aqui já foram feitos (e pela minha leitura melhor apresentada) em outro lugar. Por exemplo, o ponto sobre falha na pergunta foi apresentado há mais de 2 meses nesta e nesta resposta. A observação sobre senhas de hash foi feita pelo menos em 7 outras respostas. A questão sobre como fazer backups e contabilizar possíveis problemas em outras partes do sistema também foi feita há muito tempo. Etc etc
gnat

O ponto de falácia ligado era diferente do meu. Eles estavam declarando a diferença de significado entre hash e criptografia, enquanto eu dizia que era uma falácia pensar que um banco de dados poderia ser considerado "seguro". Ainda não vejo outras respostas discutindo outros softwares e suas interações sendo inseguras, e não fiz nenhuma observação sobre backups.
lobati

"supor que você vai ser cortado" - é assim que foi escrito em uma resposta postada mais de 2 meses atrás
mosquito
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.