Código seguro com OWASP e SSDLC - 1 Top Ten
Tags: programming, architecture, security, devops
Published: 2023-10-02 17:01:27


![Ladrão roubando dados](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dt1q9di67qukbhl5yx3x.jpg)

Fala galera,

tudo beleza?

Dando continuidade ao conteudo de segurança para código, hoje vamos falar dela a OWASP. Em um artigo anterior eu expliquei como funiona o [Desenvolvimento Seguro, S-SDLC](https://dev.to/tbertuzzi/desenvolvimento-seguro-s-sdlc-1n4f) na parte da teoria, porem agora vamos começar a entender de vez como podemos melhorar nosso código do ponto de vista de segurança. 

Antes de mais nada o que é, quem é onde vive e o que come a OWASP?

A Open Web Application Security Project ou OWASP é uma organização sem fins lucrativos fundada em 2001, cuja missão é melhorar a segurança do software. Seu nome completo reflete sua missão e importancia na segurança de aplicativos web, mas suas atividades vão além disso, abrangendo várias áreas de segurança. 

A organização é composta por uma comunidade global de especialistas em segurança, desenvolvedores, engenheiros, e outros profissionais que compartilham seu conhecimento e experiência para criar recursos e ferramentas de segurança acessíveis a todos.

A Owasp em sim possui 3 objetivos : Fornecer Recursos Educacionais, Desenvolver Ferramentas e Padrões e Promover Melhores Práticas. Tudo voltado para que tenhamos uma ideia de onde seguir boas praticas para termos aplicações mais seguras.

## Owasp Top Ten


![Bertuzzi com Checklist](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f313gba3q93zv9k9a4mg.png)

Uma das contribuições mais reconhecidas da OWASP é o "OWASP Top Ten". Esta é uma lista anual das dez principais vulnerabilidades de segurança em aplicativos da web. 

O objetivo do OWASP Top Ten é conscientizar sobre as ameaças mais críticas e ajudar as organizações a priorizar seus esforços de segurança. As vulnerabilidades incluídas na lista podem variar ao longo do tempo à medida que as ameaças evoluem, mas geralmente incluem problemas como injeção de SQL, autenticação inadequada, exposição de dados sensíveis e muitos outros.

Traduzindo para nosso querido portugues o [Owasp Top Ten](https://owasp.org/www-project-top-ten/) aborda os seguintes tópicos :

**1. Injeção:** Vulnerabilidades que ocorrem quando dados não confiáveis são inseridos em comandos ou consultas não seguras, permitindo que um atacante execute código malicioso.

Por exemplo dados não confiáveis são inseridos diretamente em instruções SQL, permitindo que um atacante execute comandos maliciosos no banco de dados.

```csharp 
string userInput = Request.Query["search"];
string query = $"SELECT * FROM Produtos WHERE Nome = '{userInput}'";
```

**2. Quebra de Autenticação:** Falhas na autenticação e gerenciamento de sessões que podem permitir que um invasor assuma a identidade de outro usuário.

```csharp 
if (senhaDigitada == usuario.Senha) {
    // Acesso concedido
}
```

**3. Exposição de Dados Sensíveis:** Quando informações confidenciais são acessíveis por pessoas não autorizadas devido a configurações inadequadas ou vulnerabilidades na aplicação.

```csharp 
string cartaoCredito = HttpContext.Request["cartao"];
```

**4. Controle de Acesso Quebrado:** Falhas na aplicação de autorização e controle de acesso, permitindo que usuários não autorizados acessem recursos protegidos.

```csharp 
if (!User.IsInRole("Administrador")) {
    // Usuário não autorizado
}
```

**5. Má Configuração de Segurança, Logs e dados:** Configurações incorretas que podem abrir brechas de segurança, como servidores web com informações de depuração ativadas.

```json
"Logging": {
    "LogLevel": {
        "Default": "Debug"
    }
}
```

**6. Falha de Segurança em Componentes:** Quando componentes de terceiros, como bibliotecas ou frameworks, contêm vulnerabilidades conhecidas que podem ser exploradas.

```bash
dotnet add package VulnerableLibrary --version 1.0

```

**7. Cross-Site Scripting (XSS):** Vulnerabilidades que permitem que um invasor injete scripts maliciosos em páginas da web vistas por outros usuários.

```csharp
string userInput = Request.Query["comment"];
Response.Write("Comentário: " + userInput);
```

**8. Deserialização Insegura:** Quando dados não confiáveis são desserializados sem verificação adequada, permitindo que um atacante execute código arbitrário.

```csharp
MemoryStream stream = new MemoryStream(Convert.FromBase64String(serializedData));
BinaryFormatter formatter = new BinaryFormatter();
object obj = formatter.Deserialize(stream);
```

**9. Regras de Negócios Quebrada:** Falhas na lógica de negócios que podem ser exploradas por atacantes.

```csharp
if (usuario.ID == 1) {
    // Acesso total concedido
}
```

**10. Redirecionamento e Encaminhamento Não Confiável:** Quando aplicativos permitem que um invasor redirecione ou encaminhe um usuário para sites maliciosos, comprometendo sua segurança.

```csharp
Response.Redirect(Request.Query["url"]);
```

Respeitando e implementando essas dicas do TOP TEN sua aplicação tem o minimo de segurança aceitavel para estar no ar.

Claro que isso é apenas um resumo, para entender melhor é necessario revisar toda a documentação do [OWASP TOP TEN](https://owasp.org/www-project-top-ten/)

Porem é uma introdução pois no proximo artigo iremos falar de OWASP ASVS então nos vemos la!

Espero ter ajudado!

Aquele abraço!