JavaRush /Blogue Java /Random-PT /Pausa para café #35. Como cumprir as regras de segurança ...

Pausa para café #35. Como cumprir as regras de segurança do GitHub. Dicas úteis para depurar código Java rapidamente

Publicado no grupo Random-PT

Como se manter seguro no GitHub

Fonte: DZone GitHub é merecidamente considerada a plataforma de desenvolvimento de equipe mais popular. Segundo dados do outono passado, mais de 40 milhões de programadores utilizaram este serviço. E como a maioria deles usa código aberto para criar software, a segurança ao trabalhar no Github deve ser sua prioridade. A reutilização de código aumenta o risco de propagação de vulnerabilidades. Isso significa que todo usuário do GitHub deve prestar a máxima atenção à criação de um ambiente de desenvolvimento seguro. Pausa para café #35.  Como cumprir as regras de segurança do GitHub.  Dicas úteis para depurar código Java rapidamente - 1Existem 8 regras que você precisa seguir para manter seu código GitHub seguro.

Fornece controle de acesso

O controle de acesso é uma das melhores maneiras de melhorar a segurança não apenas no GitHub, mas em qualquer outro ambiente onde a proteção do código seja necessária. GitHub oferece diversas maneiras de reduzir riscos em seu trabalho. Primeiro, estabeleça a prática de conceder o mínimo de privilégios – conceda aos usuários do repositório apenas as permissões que eles precisam para realizar seu trabalho. Existem outros métodos de controle de acesso que você deve seguir:
  • limitar a criação de repositórios para evitar que os usuários divulguem informações sobre a organização em repositórios públicos;
  • habilite a proteção de filiais e verificações de estado para que os usuários possam mesclar commits ou gerenciar filiais com segurança;
  • Permitir ou desabilitar a bifurcação de repositórios privados para garantir que os usuários não divulguem ou compartilhem seu código com outras pessoas;
  • revogar o acesso de todos os usuários inativos que não sejam mais membros da sua comunidade ou funcionários da empresa;
  • Verifique periodicamente os direitos de acesso aos seus projetos no GitHub;
  • Certifique-se de que os usuários não compartilhem o acesso ou senhas da conta GitHub com outras pessoas;
  • certifique-se de que cada usuário do repositório use autenticação de dois fatores em sua conta;
  • Altere os tokens de acesso pessoal e as chaves SSH periodicamente.

Nunca armazene dados de acesso em seus arquivos GitHub

O vazamento de informações de acesso ao seu repositório GitHub por meio de código, arquivos de configuração ou mensagens de commit pode ser usado para ataques. Para evitar que dados confidenciais sejam adicionados ao seu repositório, use ferramentas de controle de acesso como git-secrets ou vault . Essas ferramentas verificam sua base de código e alteram o acesso sempre que informações confidenciais são encontradas em seu código ou arquivos de configuração. Se você encontrar informações confidenciais em seu repositório GitHub, exclua-as imediatamente. Mas como o GitHub mantém um histórico de todos os commits no seu repositório, apenas excluir os dados não é suficiente. Você precisará excluir arquivos do histórico do repositório GitHub. Um passo importante para melhorar a segurança será a substituição de todas as senhas e tokens que antes estavam disponíveis publicamente.

Habilite alertas para dependências vulneráveis

À medida que os usuários do GitHub trabalham em mais projetos, fica cada vez mais difícil controlar o número crescente de objetos dependentes. Felizmente, o GitHub fornece alertas automáticos para dependências vulneráveis ​​encontradas no repositório. Esses alertas são baseados no National Vulnerability Database (NVD), no GitHub Security Advisories e no banco de dados de vulnerabilidades WhiteSource, que oferece suporte a mais de 200 linguagens de programação. Os alertas do GitHub tornam mais fácil e seguro o uso de bibliotecas de código aberto.

Verifique os aplicativos adicionados do GitHub

O GitHub Marketplace contém centenas de aplicativos escritos por desenvolvedores e empresas terceirizados. Portanto, é importante revisar cuidadosamente cada aplicativo adicionado ao seu repositório. Ao instalar aplicativos do GitHub Marketplace, siga estas diretrizes:
  • Aplicar o princípio do menor privilégio. Nunca conceda aos aplicativos mais direitos de acesso do que eles exigem;
  • Sempre questione os direitos de acesso ou permissões solicitadas por um aplicativo. Pense nos danos que isso pode causar com esse nível de acesso;
  • Verifique se a empresa ou desenvolvedor do aplicativo realmente existe antes de conceder acesso ao seu repositório GitHub;
  • Verifique a funcionalidade e segurança do aplicativo. Se contiver vulnerabilidades, você poderá ser vítima de hackers;
A segurança de uma aplicação é avaliada pela sua parte mais fraca. Isso também se aplica aos repositórios GitHub. Portanto, antes de conceder a um aplicativo acesso ao seu armazenamento, certifique-se de confiar nele e de que ele corresponda ao nível de acesso solicitado.

Verifique todo o código importado do GitHub

Os desenvolvedores costumam usar código de outras pessoas. Cada vez que você copiar parte do código de outra pessoa em seu projeto, faça uma revisão completa dele. Isto pode parecer uma perda de tempo, especialmente para projetos pequenos, mas há uma chance de que, ao negligenciar esta regra, você introduza uma vulnerabilidade em seu repositório. Outro risco associado ao código importado é que ele pode conter informações confidenciais, como dados de acesso. Se eles estiverem armazenados em arquivos GitHub, isso criará outro risco de segurança. Auditar o código antes de copiá-lo ajuda a identificar tais lacunas. Não presuma que o código de outra pessoa é seguro porque estava em um repositório privado. Isso poderia muito bem prejudicar sua base de código.

Use análise automática de código-fonte estático para seus repositórios

Existem várias ferramentas de terceiros que você pode usar para analisar vulnerabilidades em seu repositório. Um deles é o WhiteSource Bolt , uma ferramenta gratuita do GitHub Marketplace. WhiteSource Bolt verifica seus repositórios em busca de vulnerabilidades em todos os códigos expostos. Ele também fornece informações detalhadas sobre vulnerabilidades e sugere opções de correção.

Use o plano GitHub que atenda às suas necessidades

Muitas empresas têm políticas que impedem os desenvolvedores de postar código em plataformas como o GitHub. Estas restrições são especialmente comuns em departamentos governamentais e instituições financeiras. Se você trabalha em um ambiente altamente regulamentado, use GitHub Enterprise , um plano empresarial que permite hospedar repositórios em um servidor local. Isso proporciona um maior nível de segurança porque permite que os desenvolvedores da empresa tenham acesso a todos os projetos sem se preocupar com usuários não autorizados do GitHub.

Siga uma política de segurança abrangente em seus projetos

A segurança é uma responsabilidade coletiva. Se você trabalha em equipe, é importante estabelecer regras de segurança que todas as partes interessadas devem seguir. Idealmente, você deve reunir as equipes de segurança cibernética e de desenvolvimento durante a fase de planejamento para garantir que estejam trabalhando em sincronia. Isso tornará mais fácil garantir a proteção durante o processo de desenvolvimento. Se um dos membros da sua equipe for descuidado ao armazenar senhas ou outras informações confidenciais, isso poderá colocar todo o repositório em risco. Para evitar isso, documente claramente o procedimento de segurança que todos os seus colegas devem seguir.

Conclusão

Proteger seu código no GitHub é fácil. Você só precisa garantir o controle de acesso adequado, aproveitando os recursos de segurança integrados do GitHub. Se você estiver interessado em proteção máxima, integre ferramentas adicionais que aumentarão a segurança do código em todos os estágios de desenvolvimento. Também recomendamos revisar as seções GitHub Security for Business e Free Users da documentação . Dessa forma, você pode obter informações adicionais sobre segurança e proteção de código.

Dicas úteis para depurar código Java rapidamente

Fonte: Hackernoon Além de escrever código eficiente, melhorar a depuração é uma das coisas mais úteis que você pode fazer para tornar sua vida mais fácil como desenvolvedor Java. Isto é especialmente importante nas condições modernas de desenvolvimento de software, onde o mundo do software está se movendo ativamente em direção a arquiteturas distribuídas e código assíncrono. Pausa para café #35.  Como cumprir as regras de segurança do GitHub.  Dicas úteis para depurar código Java rapidamente - 2Embora os erros de software sejam inevitáveis, eles estão se tornando cada vez mais difíceis de detectar e corrigir em compilações complexas. E ao passar para a fase de lançamento do produto, o processo de depuração se torna um problema ainda mais sério. Infelizmente, não há como evitar isso - a depuração é necessária. Para ajudá-lo, decidi compartilhar algumas dicas úteis para depurar aplicações Java em diferentes estágios de desenvolvimento.

Use pontos de controle

Vamos começar com os pontos de interrupção, um ponto óbvio, mas muito importante, subjacente a qualquer processo de depuração. Os pontos de verificação permitem interromper a execução de um aplicativo para que você possa analisar o estado do programa e descobrir por que o código não está funcionando corretamente. Cada depurador oferece diversas opções de pontos de interrupção, incluindo pontos de interrupção condicionais, pontos de interrupção de exceção, pontos de controle e pontos de rastreamento. Aprender como e quando usar diferentes tipos de pontos de interrupção pode tornar o processo de depuração mais tranquilo. Vale ressaltar que algumas ferramentas modernas suportam checkpoints sem interromper a aplicação. Isso torna possível definir pontos no seu código e coletar dados de depuração sem interromper a execução do programa.

Mostrar estrutura lógica

O recurso mostrar estrutura lógica é muito útil ao monitorar conteúdo em classes Java. Se este recurso estiver habilitado, a lista de variáveis ​​mostra um array, o que é muito mais útil em um contexto de depuração. Isso é muito conveniente, especialmente se o seu código não tiver métodos toString() para objetos. As visualizações de variáveis ​​também permitem alterar diretamente os valores de suas variáveis ​​durante a depuração. Isso pode economizar uma quantidade significativa de tempo, pois não é necessário reiniciar a sessão de depuração com dados de entrada alterados.

Aprenda a navegar na base de código

Qualquer depurador Java pode usar várias funções que permitem navegar por diferentes seções de código durante a depuração. Alguns deles incluem "correr para a linha", "passar por cima", "entrar" e "entrar". Além dessas, considere mais duas opções:
  1. Drop to frame - Esta função é usada para retornar a um ponto no stack frame. Se você perdeu algum ponto e precisa voltar, basta usar a função Soltar no quadro.
  2. Filtragem por etapas - permite ignorar determinados pacotes durante a depuração. Você não precisa navegar por todas as classes do sistema JDK quando pode simplesmente filtrar os tipos desnecessários.
Para melhorar a velocidade de navegação do código, você precisa dominar as combinações de teclas de função:
  • F5 - para “entrar”.
  • F6 - para “passar por cima”.
  • F7 – para “retorno de passo”.
  • F8 - para correr para o próximo ponto de verificação.
Embora as teclas de atalho possam variar entre IDEs, se você se lembrar delas, evitará que você precise usar o mouse com mais frequência.

Aprenda a evitar impasses

Um cenário de deadlock ocorre quando dois ou mais threads são bloqueados após formar uma dependência circular. Como um conjunto de threads Java geralmente aguarda outro recurso, isso pode fazer com que o aplicativo pare completamente. A depuração de deadlocks jstack pode ser bastante difícil, pois eles não mostram indicadores de problemas, como picos de memória, carga de CPU, etc. Existem várias abordagens para solucionar uma situação de impasse no jstack. Primeiro, você pode capturar vários dumps de thread em seu cluster JVM para inferir padrões de thread. Nesse caso, analisar um dump de thread estático pode não ser suficiente. Dependendo do tamanho do cluster JVM, pode ser necessário rastrear vários arquivos, o que geralmente é um processo trabalhoso e demorado. É melhor usar uma solução de monitoramento de aplicativos que forneça a camada JV e a camada de código necessárias para isolar impasses de thread. Felizmente, existem ferramentas inovadoras que podem ajudar nesta situação, incluindo alguns depuradores modernos, bem como ferramentas comerciais de APM. Essas ferramentas aumentam a transparência do seu código Java enquanto identificam erros.

Aproveite o poder dos depuradores de produção

O processo típico de depuração que a maioria dos desenvolvedores normalmente segue envolve replicar o ambiente, isolar o erro e, em seguida, corrigi-lo. No entanto, isto não se aplica em todos os casos. Se for esta a situação, o desenvolvedor deve usar depuradores de produção poderosos. Rookout é uma dessas ferramentas. Ele permite coletar dados de depuração de aplicativos sem alterar seu estado ou controle de fluxo. Com o Rookout, você pode definir pontos de interrupção ininterruptos para obter um rastreamento completo da pilha, capturar variáveis ​​ativas ou quaisquer outros dados do aplicativo necessários para depuração. Portanto, em vez de usar soluções de monitoramento de alta sobrecarga para depuração de produção, basta usar o Rookout, que fornece tudo o que você precisa para depurar aplicativos sem reimplantar ou escrever novo código. Esteja você trabalhando em aplicativos do lado do servidor ou em contêineres, o Rookout é um ótimo complemento ao seu arsenal de depuração.

Não se esqueça da depuração remota

A grande maioria dos IDEs, como NetBeans, Eclipse, IntelliJ IDEA e Visual Studio, oferece suporte à depuração remota, uma técnica que permite corrigir código Java localizado em outro computador. Isso é especialmente importante em situações em que o sistema não oferece suporte à depuração local ou quando o computador não possui recursos suficientes para executar depuradores. Para executar a depuração remota, você deve fornecer informações de configuração que o depurador usará para se conectar à porta remota. A depuração remota também é útil na solução de problemas em situações em que desenvolvedores externos precisam se conectar ao aplicativo para corrigir um bug. Lembre-se de que às vezes a depuração pode demorar mais do que a implementação real. À medida que você aprimora suas habilidades de depuração Java, sempre se esforce para escrever um código limpo e eficiente – isso compensa quando se trata de corrigir bugs. Se você sentir que as coisas estão ficando fora de controle, é sempre uma boa ideia fazer uma pausa. Um bug é um quebra-cabeça de programação, e muitos programadores conseguiram resolver esse problema sem estar perto do computador. Use as estratégias descritas acima para se livrar dos problemas de depuração Java. Boa codificação!
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION