Seguro como Fort Knox: como proteger um site contra hackers
Publicados: 2021-10-05Neste artigo, oferecemos um guia sobre como evitar que um site seja hackeado e usado para atividades ilegais.
A segurança online é uma enorme bandeira vermelha no infinito céu azul da Internet. E embora as palavras “segurança online” possam primeiro trazer à mente o assédio online e as proteções para os usuários, o dano que a falta de segurança de um site pode causar em uma empresa também é significativo. Proprietários de sites que cortam gastos com segurança pagam com sua reputação e, conseqüentemente, sofrem perdas financeiras.
Conteúdo:
- Por que todo proprietário de site precisa investir em segurança
- De quais vulnerabilidades estamos falando?
- Falhas de injeção
- Exposição de dados sensíveis
- Ataques de script entre sites (XSS)
- Autenticação quebrada
- Configuração incorreta de segurança
- Controle de acesso quebrado
- Desserialização insegura
- Registro e monitoramento insuficientes
- Entidades externas XML (XXE)
- Usando componentes com vulnerabilidades conhecidas
- Como criar um site seguro
- Quanto custa para proteger um site?
Por que CADA proprietário de site precisa investir em segurança

Alguns proprietários de sites têm pensamentos como estes: Não há nada para roubar no meu site. Não guardo quaisquer dados do usuário ou detalhes de pagamento. Não preciso de segurança cara de primeira.
No entanto, isso é simplesmente ingênuo. Existem vários motivos pelos quais seu site pode ser hackeado, mesmo que ele não hospede nenhum dado pessoal ou financeiro. Aqui está uma lista de usos que os hackers podem ter para praticamente qualquer servidor desprotegido:
- Para exigir um resgate. Mesmo que você não mantenha nenhum dado de usuário em seus servidores, os hackers podem assumi-los e exigir dinheiro de você para recuperá-los.
- Para usar como retransmissão SMTP (protocolo de transferência de correio simples). SMTP é um protocolo usado para enviar e-mails em massa - por exemplo, boletins informativos. Os hackers podem usar seus servidores para enviar spam ou ransomware.
- Para minerar Bitcoins.
- Para usar em ataques DDoS como parte de um botnet.
- Para alterar ou excluir os dados do seu site. As razões para isso podem variar.
E isso está apenas arranhando a superfície. Além de ameaças de terceiros (hackers e outros criminosos), também existem ameaças de possíveis erros por parte dos funcionários que gerenciam seu site, por exemplo. Na verdade, a segurança interna é tão importante quanto a externa, senão mais.
Então, como posso proteger meu site contra hackers? você pergunta.
Bem, você deve considerar e lidar com uma série de vulnerabilidades.
De quais vulnerabilidades estamos falando?
Uma das entidades mais conceituadas do setor que se preocupa com a segurança cibernética é o Open Web Application Security Project, abreviado OWASP. A fundação OWASP monitora e atualiza regularmente sua lista de problemas generalizados de segurança na web. A seguir estão os problemas de segurança comuns em sua lista (sem ordem específica) no dia da redação deste artigo e algumas dicas para reduzir o perigo para o seu site.
Falhas de injeção

As falhas de injeção dizem respeito a bancos de dados e são causadas por uma validação de entrada insuficiente. Quando o seu sistema aceita a entrada do usuário, mas não consegue filtrar adequadamente essa entrada, torna o sistema vulnerável - os hackers podem explorar isso para injetar seu código em seu sistema (daí o nome). Esse código injetado pode fazer com que seu site execute comandos inesperados, fazendo com que ele exiba dados confidenciais ou até mesmo ceda o controle do site para o hacker.
O tipo mais popular de vulnerabilidade de injeção envolve bancos de dados SQL, mas as vulnerabilidades de injeção não estão realmente limitadas a eles. Consultas XPath, instruções LDAP e scripts XML também podem ser vulneráveis à injeção.
Como tornar um site seguro contra falhas de injeção? Duas das melhores práticas incluem o uso de sanitização de consulta SQL e consultas parametrizadas. Existem APIs que permitem que você faça isso.
Se você não quiser implementar essas coisas manualmente, pode usar uma ferramenta ORM (mapeamento objeto-relacional) para sua linguagem de programação preferida. Usamos ActiveRecord porque está intimamente ligado ao ecossistema Rails.
Nenhuma das opções acima é completamente infalível, mas é o mais próximo que pode chegar de uma proteção sólida nos dias de hoje.
Exposição de dados sensíveis

Dados confidenciais são quaisquer dados que podem ser usados para explorar uma pessoa de uma forma ou de outra:
- Nome
- Número da Segurança Social
- Número da carteira de motorista
- Informação do cartão de crédito
- Nomes de usuário e senhas
- Data de nascimento
- Informação de saúde
- Nome de solteira
- Nome dos pais
Pode até incluir qualquer informação que seja uma resposta a uma pergunta de segurança, digamos, para sua conta bancária. Quem teria pensado que o nome do seu primeiro animal de estimação poderia ser considerado um dado confidencial, certo?
Proteger sites da exposição de dados confidenciais é difícil, uma vez que essa exposição é difícil de prever e detectar. Mas existem medidas preventivas que você pode tomar. Dados confidenciais, se armazenados em um site, nunca devem ser armazenados como texto simples ; deve ser criptografado com a tecnologia mais recente e transmitido apenas por canais seguros.
Se o seu site facilita qualquer transação ou geralmente lida com dados confidenciais, ele precisa usar criptografia SSL. Esta é a melhor e mais recente tecnologia de criptografia disponível. A criptografia SSL ajuda a transferir dados com segurança entre um navegador e um servidor ou entre servidores. Além disso, muitos usuários procuram HTTPS no endereço do seu site para ver se ele é seguro. Esse cabeçalho é o que você obtém ao obter um certificado SSL.
Geralmente, também é recomendável armazenar dados na nuvem. No entanto, não presuma que simplesmente armazená-los na nuvem tornará os dados seguros automaticamente. No entanto, todas as medidas de proteção devem ser implementadas e você deve monitorar e atualizar regularmente a segurança.
Ataques de script entre sites (XSS)
Vulnerabilidades XSS são, de certa forma, semelhantes a falhas de injeção, pois permitem que hackers afetem as páginas do seu site injetando código não nativo. No caso do XSS, estamos falando sobre injeção de JavaScript. O JavaScript injetado por um hacker pode alterar o conteúdo da página, inserir links para sites maliciosos e enviar dados originalmente ocultos de volta ao hacker, resultando na exposição de dados confidenciais.
Ruby on Rails e React possuem proteção XSS integrada. Outra opção para medidas anti-XSS e anti-injeção seria usar o cabeçalho de resposta HTTP Content-Security-Policy.
Autenticação quebrada

Originalmente chamado de “Autenticação quebrada e gerenciamento de sessão,” esta falha lida com vulnerabilidades durante a autenticação do usuário e gerenciamento de sessão, como fica evidente pelo nome. Isso inclui a exposição de credenciais de login e uma série de problemas com IDs de sessão:
- IDs de sessão fracos
- IDs de sessão exibidos em URLs
- IDs de sessão que não mudam entre logins
- Transmitindo IDs de sessão por meio de conexões não seguras
Os IDs de sessão estão diretamente conectados à identidade de um usuário, o mesmo que as credenciais e, portanto, interceptá-los pode levar ao sequestro da conta de um usuário. Isso causa todos os tipos de danos aos usuários, desde financeiros e de reputação até relacionados à saúde.
Para tornar seu site seguro contra ataques de autenticação, exija a autenticação multifator : por exemplo, exija uma senha constante e uma senha de uso único entregue ao dispositivo móvel do usuário.
O Google emprega uma opção de autenticação de dois fatores : para abrir sua conta do Google em um navegador da web, você precisa primeiro inserir sua senha. Se estiver correto, você também precisa abrir o Google app em seu telefone e escolher o número mostrado no navegador da web.
Os métodos de proteção de site mais óbvios para autenticação quebrada incluem:
- reforçando a complexidade da senha - “Sua senha deve ter pelo menos 8 caracteres e incluir pelo menos um número, uma letra maiúscula e uma letra minúscula”.
- limitar as tentativas de login antes das quais a conta é suspensa (por um tempo específico ou até que o usuário contate os administradores do site) e alertar os administradores
Configuração incorreta de segurança
A configuração incorreta de segurança é um tópico amplo, pois pode acontecer em qualquer estágio e com qualquer parte do seu site: um banco de dados, uma rede, um servidor, uma estrutura, armazenamento ou qualquer outra coisa. Os pontos fracos da configuração podem ser explorados para obter acesso à funcionalidade do sistema. Dependendo de onde está a vulnerabilidade, esse acesso pode ser parcial ou completo. Exemplos de configuração incorreta:

- Você não desabilitou contas / senhas padrão.
- Existem recursos desnecessários e não utilizados.
- As permissões de acesso à nuvem não estão configuradas com segurança.
- Suas mensagens de erro exibem informações confidenciais como nomes de usuário, senhas ou endereços de e-mail.
A primeira coisa a fazer para evitar a configuração incorreta é remover tudo o que não é usado - recursos, amostras, estruturas, etc. A próxima etapa é garantir a mesma configuração para todos os ambientes e verificar seu desempenho regularmente. Uma arquitetura bem pensada é imprescindível.
Controle de acesso quebrado

O controle de acesso é o controle sobre o que os usuários podem e não podem fazer. Quando não é aplicado corretamente, significa que os usuários podem executar ações que podem afetar o seu site de maneiras imprevisíveis. Uma maneira de explorar o controle de acesso interrompido é visualizar e editar os perfis e dados de outros usuários. Outra é acessar recursos premium sem pagar ou ganhá-los. Outra é acessar as páginas de administrador de uma conta que não seja de administrador (ou pior, sem nenhuma conta).
A melhor maneira de garantir que o controle de acesso do seu site esteja funcionando é o teste manual. Nenhuma ferramenta de teste automatizada pode garantir que o controle de acesso funcione conforme o esperado.
O controle de acesso quebrado também pode resultar do abuso do mecanismo de compartilhamento de recursos de origem cruzada (CORS), que pode fornecer acesso a APIs de outra forma restritas. Por esse motivo, é recomendável usar o CORS o menos possível.
Desserialização insegura
A serialização é o processo de transformar um objeto em um código binário. A desserialização é, logicamente, o oposto. Ambos são processos conduzidos regularmente no desenvolvimento web, o que torna importante implementar proteções contra seu uso em ataques.
A boa notícia é que a desserialização não é algo que um usuário regular ou seu funcionário possa fazer acidentalmente . Essa também é, em parte, a má notícia - os ataques de desserialização são sempre deliberados e, portanto, cruéis. Eles também resultam nos problemas mais sérios, como executar código remoto, entrar no site sem autenticação e iniciar ataques DoS (negação de serviço).
A maneira mais fácil de proteger seu site contra esse tipo de ataque é proibir objetos serializados gerados pelo usuário. Se isso não puder ser feito, a próxima melhor opção é usar assinaturas criptográficas para verificações de integridade.
Usar JSON, YAML ou XML pode dificultar a exploração dos pontos fracos da desserialização para os hackers, uma vez que esses formatos não são binários.
Registro e monitoramento insuficientes

Esta vulnerabilidade parece bastante óbvia: se você não monitora seu site e não registra todos os erros e tentativas fracassadas de efetuar login ou executar a funcionalidade de controle de acesso , você está basicamente tentando os hackers a atacar seu site. Em qualquer tipo de guerra, digital ou real, o primeiro ataque geralmente não é para vencer, mas para ver o que você está enfrentando. E se houver uma maneira fácil de entrar, você a usa. Deixar de registrar e monitorar tal investigação resultará em seu sistema perder o ataque completamente ou detectá-lo uma vez que já ocorreu e o dano está feito.
O registro é particularmente importante para sites de comércio eletrônico, uma vez que lidam com o dinheiro e as credenciais financeiras dos usuários.
Para tornar seu site mais seguro, registre corretamente todas as tentativas malsucedidas e certifique-se de que esses registros sejam armazenados e copiados fora de seus servidores locais. Empregue sistemas de alerta automático para tais falhas e, se possível, suspenda as contas que continuamente geram tais falhas. É vital ter sistemas de alerta em tempo real para que você possa reagir a uma possível violação imediatamente.
Entidades externas XML (XXE)
Já mencionamos XML (Extensible Markup Language) algumas vezes. É uma linguagem flexível, o que a torna fácil de usar e difundida. Os processadores XML analisam dados de documentos XML. Se o seu site for baseado em XML e aceitar uploads de XML sem validação, ele pode ser suscetível a ataques.
Para proteger a integridade do seu site, o seguinte conjunto de ações é recomendado:
- Desative o processamento de DTD (definição de tipo de documento).
- Limite ou impeça uploads de XML ou, se isso não puder ser feito, reforce a lista de permissões - validação de entrada positiva do lado do servidor.
- Atualize regularmente seus processadores e bibliotecas XLM.
- Impedir a serialização de dados confidenciais.
- Onde aplicável, use JSON ou formatos simples semelhantes.
- Implemente firewalls de aplicativos da Web (WAFs) e gateways de segurança de API.
Usando componentes com vulnerabilidades conhecidas
Nada é perfeito, e qualquer componente que você usa em seu software está fadado a ter alguma vulnerabilidade, conhecida ou desconhecida. Em resposta a vulnerabilidades descobertas e reconhecidas, o software é atualizado para cobrir essas vulnerabilidades ou mitigar qualquer dano que possa ser causado por sua exploração. Alguns pontos fracos causam danos menores, mas outros podem ser prejudiciais para o seu negócio.
Para evitar a invasão de sites devido a vulnerabilidades conhecidas, é importante verificar regularmente se há atualizações e atualizar todos os componentes usados em seu site. Essa pode ser uma tarefa tediosa em softwares e sites com muitos componentes. É por isso que os especialistas em segurança recomendam verificar e remover regularmente bibliotecas, recursos, arquivos e outros componentes desnecessários e não utilizados. E, é claro, use apenas componentes de fontes oficiais. Não se deixe seduzir por sites que distribuem software normalmente pago gratuitamente - ele pode ser modificado para hackear seu site.
Como criar um site seguro: o resultado final

Para colocar todas as informações de alta tecnologia em termos leigos, aqui estão as dicas de segurança a seguir se você deseja criar um site seguro:
- Encontre um host confiável.
- Atualize regularmente todos os softwares, estruturas e bibliotecas usadas em seu site.
- Remova todos os recursos e componentes desnecessários do seu site.
- Configure os sistemas para validar a entrada tanto no navegador quanto no servidor.
- Monitore as informações exibidas nas mensagens de erro.
- Configure um verificador de força de senha para os usuários.
- Sempre use senhas fortes para seus servidores e páginas de administração e mude-as regularmente.
- Invista em um certificado SSL / use o protocolo HTTPS.
- Configure o registro adequado para falhas e erros.
- Transações de auditoria de log (especialmente se o seu for um site de comércio eletrônico).
- Monitore os registros de perto.
- Use servidores em nuvem, mas proteja seus dados mesmo assim.
- Sempre criptografe dados confidenciais usando as tecnologias mais recentes.
- Faça com que sua equipe de segurança fique de olho nas atualizações de segurança emergentes, bem como nas novas ameaças, para poder reagir a ataques em tempo hábil.
Quanto custa para proteger um site?
Esta é uma pergunta para a qual não há uma resposta definitiva. O custo da segurança depende muito da pilha de tecnologia usada pelo seu site. Além disso, há o custo das atualizações, que dependerá de quantos componentes você precisa atualizar, com que frequência você os atualiza e quanto custa cada atualização. Esses custos precisam ser calculados individualmente por seus desenvolvedores.
É altamente recomendável levar a segurança em consideração desde o início do desenvolvimento . Deixar a questão da segurança para o fim pode (e provavelmente resultará) na necessidade de introduzir alterações no núcleo do seu site, o que pode ser ainda mais caro do que criar segurança desde o início.
Conclusão
Se você é um desenvolvedor, possui uma empresa de desenvolvimento ou tem uma equipe de desenvolvimento interna, pode definir todas essas tarefas diante deles. No entanto, se você ainda não tem especialistas técnicos ao seu lado e deseja saber como criar um site seguro com um provedor de terceirização, recomendamos encontrar uma empresa de desenvolvimento que possa não apenas construir um site, mas também apoiá-lo. É quase impossível prever todas as vulnerabilidades, mas a capacidade de reagir a qualquer violação em tempo hábil pode salvar seu site do pior dos destinos.
Os desenvolvedores da Mind Studios são experientes nas melhores práticas de segurança e acompanham as tendências mais recentes. Se você tiver dúvidas sobre como proteger seu site contra hackers, entre em contato conosco para uma consulta gratuita .
Escrito por Svitlana Varaksina e Artem Chervichnik
