Solução
| Nome | Valor | 
|---|---|
| Vulnerabilidade | Type Confusion | 
| CWE | CWE-843 | 
| OWASP Top Ten | A01_2021-Broken_Access_Control | 
Você sabia que o sistema de tipos de uma linguagem de programação pode afetar a segurança? Pois você acabou de presenciar uma das maneiras como isso pode acontecer.
Type confusion é quando os dados de uma aplicação são interpretados de forma inesperada pelo programador por não ser do tipo que ele estava esperando.
Quando você envia uma string nos campos
            username e password, a aplicação
            se comporta como o esperado. Mas se você enviar valores
            booleanos nestes campos, a engine do PHP irá fazer uma
            comparação entre um booleano e uma string. Nesse
            caso a string é convertida para booleano.
Se a string for vazia ela é considerada como
            false, do contrário true. Então,
            se você mandar true nos campos
            username e password, você
            conseguirá fazer login na aplicação. Porque o PHP estará
            comparando true com true.
            Exemplos:
fetch('./login.php', {
    method: 'POST',
    body: JSON.stringify({
        username: true,
        password: true,
    }),
})
    .then(response => response.json())
    .then(response => console.log(response));Ou usando o curl:
$ curl \
    --data '{"username": true, "password": true}' \
    http://127.0.0.1:8080/login.phpAltere o código desse exercício para garantir que essa vulnerabilidade não aconteça mais.