Como desenvolvedor você desenvolve software com segurança? Leia este artigo e responda se sim ou não.

Olá caro(a) leitor(a), hoje eu gostaria de informar e falar sobre o desenvolvimento de software com segurança. Você desenvolvedor, se preocupa com segurança quando está desenvolvendo algum software mobile, web, desktop, web mobile? Essa é a primeira pergunta que deixo pra você pensar e analisar antes de prosseguir na leitura.
 
Pra você, qual a importância de desenvolver software seguro? Depois de um certo tempo trabalhando em empresa que desenvolve software e presta serviços para outras empresas como banco e outros clientes, percebi que 80% (oitenta porcento) dos novos softwares desenvolvidos são do tipo Web, isto é, o software desenvolvido precisa de Internet para ser acessado e utilizado. Pode ser Mobile, Web, ou até em alguns casos desktop para funcionar no browser, isso mesmo, funcionar no browser IE. Este é um outro assunto para falar em outro momento.
 
Se o software precisa ser acessado, existe algum endereço que da Internet ou com apenas o IP que acessa o software. Se tem endereço, provavelmente tem maneiras de um “hacker" mal intencionado acessar o sistema para tentar invadir, invadir o servidor, invadir o banco de dados e invadir o software através de uma falha de segurança. Essa falha pode ser explorada de diversos meios, desde a mais simples tentativa até a mais complexa.
 
Não sei se já teve essa infelicidade, mas a sua casa já foi invadida e quando chegou as coisas estavam bagunçadas ou faltando objetos. É uma sensação desagradável e o mesmo tempo você se sente impotente em relação ao acontecimento. É um exemplo simples mas que pode acontecer com qualquer pessoa e principalmente no Brasil onde crimes e roubos estão crescendo todos os dias, basta olhar nos jornais e noticiários. 
 
Talvez esse sentimento pode ocorrer com você quando desenvolve um software e ele é invadido por “hacker”. Alguns colocam outras páginas no local da sua, outros colocam “scripts” deixando o seu sistema inseguro para quem acessar e outros, pegam todos os dados do seu sistema para vender ou te chantagear pedindo dinheiro.
 
Foi isso que aconteceu com o site famoso de traição chamado Ashley Madison. Basta procurar no Google ou no Bing colocando esse nome “Ashley Madison” que vai encontrar informações e até dados de clientes publicados na Internet. Os dados foram pegos e publicados na Web sem autorização dos donos. Só que, ao ver o site, você pode notar que não foi desenvolvido do zero por um programador experiente e focado em segurança de dados, talvez tenha sido desenvolvido ou modificado utilizando uma plataforma já pre-existente. E quando você utiliza uma plataforma pre-existente você tem que tomar cuidado com o código desenvolvido, pois os “hackers” tem explorado bastante estas plataformas prontas.
 
Quando você vai desenvolver um software é necessário criptografar os dados principais, de clientes, senhas e o que for mais necessário. Não só dentro do banco de dados mas em todo lugar, inclusive no arquivo de configuração. Muitos esquecem que no arquivo de configuração do sistema podem ter várias informações que ajudam ao invasor a entrar de forma não autorizada. Lá pode ter um endereço de FTP, usuário, senha, endereço do banco de dados, dados de emails e tudo mais. Todos os dados precisam ficar criptografados na minha opinião.
 
A forma de selecionar alguma informação do banco de dados precisa ser feita de forma segura, talvez utilizando um SSL, em camada separada e sem uso de aspas simples ou duplas. Deve ser feito utilizando parâmetro(s) ao invés de colocar aspas. O envio de dados ou código através de GET pode ser também classificada como envio inseguro e proporciona o invasor ter mais conhecimento do seu sistema, basta a pessoa ter um certo conhecimento de HTML para saber como funciona e ele pode trocar os dados enviados para fazer testes.
Tive um site que utilizava o envio via GET de alguns dados para controle, um “hacker” conseguiu entender para que servia o dados enviado e conseguiu trocar os valores e o valor trocado era um código inseguro; isto é; todo usuário que entrava nesse meu site era infectado através do código malicioso. O Google detectou que o site estava com um código malicioso e começou avisar os usuários através das buscas na ferramenta.
 
Hoje os sites de busca como Bing, Google e Yahoo possuem a tecnologia que identifica se o site é ou está malicioso. A minha dica é, se você tem alguma dúvida sobre o site, acesse o sistema de busca e coloque o endereço e veja as observações ou status. Geralmente está na cor vermelha e indica perigo no acesso. Os browsers também estão configurados por padrão para identificar os sites maliciosos mas se a configuração estiver desabilitada você não irá saber nada.
 
Quanto menos informação aberta em seu site melhor. Alguns sistemas não estão preparados para eventuais problemas. O roteador da empresa onde trabalhava estava guardando cache para melhorar a velocidade da Internet, o grande problema é que, alguns sistemas estavam mantendo os usuários ou as sessões dos usuários anteriores ou atuais. Por exemplo: se o usuário 1 entra e o usuário 2 entra depois de 10 minutos o usuário 1 aparece e todas as informações do usuário 1. Mesmo pedindo para logar no sistema como usuário 2, o sistema mostra o usuário anterior que estava logado.
 
Esse problema é grave e ao mesmo tempo inseguro para o usuário. Como desenvolvedor, tenha certeza que seu usuário saiu do sistema usando o botão de sair. Não feche o browser apenas, clique em sair. Mas como resolver esse problema de manter o usuário antigo? Basta finalizar a sessão e zerar os dados da memória do servidor. Se o sistema for confidencial ou de folha de pagamento, um usuário poderá ver o contra-cheque do outro funcionário ou do próprio chefe.
 
Outro exemplo já passado por mim na antiga empresa foi que a pessoa de RH me colocou como administrador do sistema, assim eu tinha acesso a qualquer informação da empresa ou usuário clicando uma vez. O treinamento de funcionários pode ser classificado também como falha de segurança do sistema, isso porque, qualquer permissão dada a usuários pode ser o fim de um segredo da empresa. Como funcionário honesto, avisei ao meu chefe sobre a minha permissão e em pouco tempo ele conversou com a pessoa que alterou minha permissão. No seu caso, você faria o mesmo ?
 
O log de informação também é importante em cada sistema, você sabia? Vou tentar explicar melhor. Quanto mais o sistema souber o que o usuário está fazendo, o que ele clicou e quanto tempo ele ficou naquela página, melhor para gerenciar os dados, ou você acha que o Facebook não faz isso! Nós chamamos de “track” de informação ou “track” do sistema, responsável por guardar todas as informações feitas no sistema. O usuário acessou, o que ele clicou, o que processou e quanto tempo ele está na tela.
 
O servidor é um item indispensável pra quem for hospedar seu serviço ou site. Deve estar sempre atualizado e protegido com firewall, se possível até mais de um firewall. Anti-vírus é um assunto muito longo, será que está caindo ou ainda é uma necessidade? Deixamos para depois esse assunto de anti-vírus.
 
A minha sugestão é que, se você for fazer um sistema de software pense os itens citados acima. Procure criar software com segurança em todos os aspectos. Espero que tenha gostado e te ajudado em certo sentido.
 
Qualquer dúvida favor entrar em contato pelo site www.mauriciojunior.org