Ir para conteúdo

Gabriel Galdino

Membros
  • Postagens

    2
  • Registro em

  • Última visita

  • Dias Ganhos

    1

Gabriel Galdino venceu a última vez em Novembro 28 2022

Gabriel Galdino tinha o conteúdo mais apreciado!

1 Seguidor

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

Conquistas de Gabriel Galdino

6

Reputação

  1. O GitHub é reconhecido como uma das principais redes de gerenciamento e armazenamento de código do mundo, sendo uma ferramenta que integra o cotidiano de um Dev, seja qual for o seu nível de experiência. Mas será que seu código no GitHub está sendo armazenado com segurança? O GitHub fornece várias ferramentas e configurações voltadas à segurança. Apesar disso, segundo uma pesquisa de 2019, o problema de segurança no GitHub está relacionado, muitas vezes, com o próprio comportamento de seus usuários por falta de conhecimento em desenvolvimento seguro (AppSec). Neste post, abordaremos algumas dicas de segurança importantes que toda pessoa dev precisa ficar ligada ao manter seu repositório por lá! Ah, e não deixe de conferir também um artigo sobre como manter seu código seguro no GitHub com a integração da Conviso Platform. Vamos às dicas: Não armazene credenciais como código ou configuração no seu GitHub Apesar de parecer uma recomendação óbvia, é muito comum o armazenamento de senhas em repositórios no GitHub. Isso pode acontecer de forma indireta ou involuntária. Para isso, existem ferramentas como git-secrets, Vault, Keycloak que analisam estaticamente seus commits para garantir que você não tente enviar senhas ou informações confidenciais em seus repositórios. Além do uso das ferramentas, uma recomendação muito importante é a conscientização de todo o time de desenvolvimento no policiamento de ações no fluxo de trabalho, buscando sempre validar a segurança do código e realizar auditorias de segurança. Adicione um arquivo SECURITY.md em seu projeto Todos sabem da importância de ter um README.md bem escrito e estruturado em seu repositório. Com o SECURITY.md não deve ser diferente. Esse arquivo representa a política de segurança do seu código, destacando as principais informações que envolvem o tema. O objetivo do SECURITY.md é documentar formalmente os processos e procedimentos relacionados à segurança, incluindo relatórios de vulnerabilidade, requisitos de confidencialidade, padrões de criptografia, acessibilidade de token, uso de endereço de e-mail, requisitos HTTPS e entre outros procedimentos para manter a integridade dos dados da sua aplicação. Alguns tópicos importantes que você pode se guiar para estruturar seu arquivo SECURITY.md: ● Política de divulgação; ● Política de atualização de segurança; ● Configuração relacionada à segurança; ● Lacunas de segurança reconhecidas e melhorias futuras. De modo geral, um arquivo SECURITY.md representa a política de segurança para seu código no GitHub. Você pode encontrar exemplos de arquivos SECURITY.md no repositório Apache Storm, que define estruturas de organização semelhantes à apresentada acima. Gerencie os níveis de acesso e permissões de membros do seu repositório Desenvolvedores com acesso ao seu repositório podem receber permissões além do que o exigido pelo escopo de sua função. Desenvolvedores podem acidentalmente mudar as configurações de seu repositório, como alterar sua visibilidade. Para evitar isso, recomendamos definir a capacidade de alterar a visibilidade do repositório apenas para os proprietários da organização. Faça isso navegando até "Permissões de membro" nas configurações da sua organização e gerenciando essas permissões para manter o controle e segurança de acessos. Lembre-se de verificar regularmente os níveis de acesso de desenvolvedores terceirizados/externos. Estabeleça uma revisão de código, antes de fazer o commit Adicionar revisões de código ajuda a evitar que códigos maliciosos sejam incorporados em seus repositórios. Assim, as práticas de revisão de segurança facilitam a identificação de vulnerabilidades e problemas de risco de segurança de longo prazo, evitando problemas futuros. Para lidar com isso, o próprio GitHub possui um recurso de pull_request que permite que membros autorizados da equipe discutam e revisem possíveis alterações antes de mesclar o código no branch base. Dessa forma, quando uma pull request é feita, os responsáveis podem ser notificados para revisão. Determine testes de segurança aos PRs A própria plataforma do GitHub possui uma ferramenta conhecida como Git Hook orientada a eventos que permite enviar solicitações HTTP POST a um serviço de sua escolha. Existem vários eventos que você pode definir para a ferramenta agir, sendo um dos mais úteis o evento pull_request para testar as alterações de código. Audite qualquer código que for importar ao GitHub Durante a construção de uma aplicação, há momentos em que é muito fácil adicionar blocos de códigos externos para agilizar e facilitar o processo de desenvolvimento. Ao mesmo tempo, partes do código de sua aplicação também podem acabar entrando em outros repositórios. No entanto, importação de código legado ou de pacotes externos pode acabar adicionando vulnerabilidades em seu repositório, como o Log4j. Dessa forma, definir um requisito de segurança para auditar todo o código que é carregado no GitHub é uma prática muito importante para proteger sua aplicação de códigos legados ou com vulnerabilidades. Planeje seu projeto com segurança em mente Uma prática importante para o desenvolvimento de qualquer tipo de aplicação é o planejamento de segurança antes mesmo de iniciar a codificação. Fazendo esse planejamento de segurança, se preocupando também com a qualidade, você escreverá um código melhor e mais seguro, atraindo atenção aos seus repositórios. Dessa forma, ao construir seu projeto com segurança, menos tempo será gasto tratando vulnerabilidades no futuro. Além de planejar, integrar seu projeto com plataformas de segurança contribui para a centralização das informações, estruturação do processo de revisão de cada commit e gerenciamento de vulnerabilidades. Se você é dev ou tem interesse em saber mais sobre segurança de aplicações, não deixe de conferir o canal de YouTube da Conviso - estamos criando vários vídeos super informativos e dinâmicos sobre AppSec por lá. Inscreva-se no YouTube da Conviso!
  2. O que é preciso para escrever um código de qualidade? "Escreva para pessoas, não para computadores", já dizia Uncle Bob, autor do livro “Clean Code” de 2008, que reúne algumas técnicas e práticas que ajudam a tornar o código mais legível, coeso e consistente. Neste post, vamos descrever algumas dicas de otimização de código desde o viés deste livro e a importância de aliar o código limpo com a Programação Segura, do DevSecOps, para garantir aos desenvolvedores uma melhor qualidade em suas entregas. Figura ilustrativa de como se mensura a qualidade de um código: Código de qualidade é geralmente definido como um código que funciona como pretendido para o usuário final, sem problemas. No livro que mencionamos, você encontra muitas dicas e recomendações, além de outros exemplos para te guiar. Lembrando que um código de alta qualidade tende a ser também mais seguro. Para isso, todo desenvolvedor precisa ter a consciência de que é preciso otimizar o código e escrevê-lo tendo em mente as principais vulnerabilidades, desde o início. Funcionou! Então já está bom? O código não deve ser medido apenas com base em “funciona” ou “não funciona”. Supostamente, o código que não funciona não é bom. No entanto, o código funcionando não significa necessariamente que está em boa condição. Programação em blocos Considere programar em blocos, ou seja, tenha uma visão geral do seu código conforme você o escreve. Por exemplo, em linguagens de programação baseadas em blocos, você sabe que o sistema funciona como um quebra-cabeça, cada fragmento é um comando e, em uma série de fragmentos, conseguimos escrever um bloco (ou parágrafo), que por sua vez faz o programa funcionar. Comentários nem sempre são legais Seja objetivo, evite comentários óbvios enquanto estiver escrevendo seu código. Comentários irrelevantes explicando o que um comando faz apenas poluem seu trabalho. Se você precisar comentar para explicar o código, talvez seja um sinal de que esteja precisando reescrevê-lo. Fique ligado nos nomes das funções: eles devem ser autoexplicativos Os nomes estão por toda parte: variáveis, funções, métodos, parâmetros, classes, objetos, arquivos fonte, diretórios, projetos, ramificações de controle de versão, etc. Reserve um tempo para escolher bons nomes para cada elemento do seu código. Tenha em mente o seguinte exemplo: se precisarmos de uma função que obtenha as informações bancárias do usuário, não devemos usar um nome como getUserInfo ou algo parecido. Nesse caso, o ideal seria usar algo como getUserBankInfo, sendo mais específico. Evite a repetição de código Quando estiver utilizando muitos comandos Ctrl+C e Ctrl+V, pergunte-se se existe uma alternativa melhor. A repetição significa que algum código, dentro do que está duplicado, precisa ser extraído para se tornar uma função. Veja este exemplo: Prática de repetição Na primeira parte repetimos a mesma coisa três vezes. A solução de fazer uma função individual, deixando o código mais enxuto, por meio da reutilização é a melhor solução: Agora evitando a repetição As funções devem ser pequenas Funções pequenas ajudam a contar uma história de forma fácil e correta. Elas adicionam ordem, separação de interesses, abstração apropriada e estrutura correta ao seu código. Se nomeadas corretamente, tornam o código limpo, fácil de depurar e simples de seguir. Mas quão pequeno deve ser? Bem, de acordo com o Robert, uma função nunca deve ter mais de 20 linhas de código. As funções devem fazer apenas uma coisa Uma função não deve afetar outros processos além de sua função pretendida inicialmente. Imagine que seja necessário adicionar e subtrair dois números, podemos fazer isso com uma única função. Entretanto, seguindo a boa prática, o ideal é dividir em duas funções. Função que faz mais de uma coisa: Dividindo a função para cada uma servir ao seu papel: Por que dividir? Quando houver funções individuais, elas serão facilmente reutilizáveis durante o desenvolvimento da aplicação. Código otimizado é sinal de código seguro? Seguir essas dicas pode agregar muito na otimização do seu código. No entanto, a filosofia do código limpo não se limita aos tópicos mencionados acima. Para muitos Devs, ter um código limpo e rodando sem problemas significa ter um código seguro, mas o que nem todos sabem é que um código performático, não garante que esteja isento de vulnerabilidades. Vulnerabilidades e violações de segurança podem existir em qualquer lugar no código. Nesse sentido, você pode acelerar a sua entrega aplicando o princípio Shift-Left, o que significa em outras palavras trazer todo o planejamento e preocupação com segurança, antes mesmo de fazer um commit. Proteja-se contra os ataques conhecidos É fácil imaginar que muitos invasores poderão hackear nossas aplicações utilizando vetores de ataques conhecidos, ou melhor dizendo, das vulnerabilidades mais comuns na internet. Uma falta geral de conhecimento sobre ameaças famosas da área de segurança e como explorá-las leva à repetição dos mesmos bugs de segurança no código. Posto isso, descubra as 10 principais vulnerabilidades do OWASP e como essas explorações populares funcionam. Seguir essas dicas de segurança irá protegê-lo de muitas vulnerabilidades futuras e este pode ser o início de sua Programação Segura. Dicas técnicas de programação segura Após revisar algumas técnicas de otimização de código com Robert Martin e a importância da segurança na hora de desenvolver uma aplicação, ficou evidente o papel do desenvolvedor na construção de uma aplicação segura e de alta qualidade. Portanto, desenvolvemos um conteúdo abordando algumas práticas para te ajudar a desenvolver de forma mais segura para ser proativo em relação às possíveis ameaças de segurança, confira essas dicas do blog da Conviso. Gostou deste conteúdo? Inscreva-se no canal de YouTube da Conviso!
×
×
  • Criar Novo...