Neste capítulo, veremos alguns ataques comuns, e como o site de quadro de avisos de amostra é vulnerável, e como corrigi-lo para esses ataques. A primeira vulnerabilidade que veremos é script entre sites. Lembre-se de que o script entre sites é uma vulnerabilidade isso acontece quando recebemos a entrada de um usuário e mostrá-lo a outro usuário. Por que isso é uma vulnerabilidade? Lembre-se que o que o servidor envia ao usuário é exibido como uma página HTML. A página HTML pode incluir JavaScript que é o código que é executado no navegador. Não queremos que hackers coloquem código em nosso site que executa nos navegadores de outros usuários. O site do quadro de avisos tem dois lugares onde recebemos a entrada de um usuário e mostrá-lo a outros usuários. Uma está nos perfis de usuário, e o outro está nos postes do quadro de avisos. Vamos olhar especificamente para perfis de usuários. Então aqui, quando tivermos postagens recentes, podemos clicar no perfil de um usuário, no nome do usuário para ver o perfil deles. E aí vemos o perfil de John. Agora, se John quiser editar seu perfil, No momento estou logado como John, Posso clicar em Editar perfil. E então eles podem alterar o texto Sobre e mude a foto do perfil. Para testar para ver se um determinado campo é vulnerável a scripts entre sites, nós apenas temos que inserir algum HTML nele. Assim, por exemplo, vamos fazer este último pedaço em negrito, se estivermos vulneráveis a scripts entre sites. Se não estivermos vulneráveis a scripts entre sites, então veremos a tag real, forte. Voltaremos e veremos o perfil de John. Então, podemos ver que essa frase está realmente em negrito. Não vemos as etiquetas. As tags estão sendo interpretadas como HTML. Isso significa que esse campo específico é vulnerável a scripts entre sites. Vejamos outro exemplo. Lembre-se de que HTML pode incluir JavaScript. Como é vulnerável a scripts entre sites, este script será executado quando um usuário visualizar o perfil de John. Então esse script foi executado e exibiu um alerta. Agora, um alerta é bastante benigno, mas qualquer JavaScript poderia estar lá, e teria sido executado. Portanto, o script entre sites permite que os hackers coloquem código em seu site que será executado nos navegadores de outros usuários. Como corrigimos isso? Bem, a ideia básica é que temos que processar a saída e substitua certos caracteres-chave por equivalentes HTML. Por exemplo, substituímos o sinal de menor que por um <. Substituímos o sinal de maior que por um similar entidade HTML. Agora temos que fazer isso com cada personagem que é especial para HTML. Isso deve ser feito com qualquer saída que enviamos ao navegador do usuário que inclui a entrada de outro usuário. E é muito fácil perder lugares. Então a melhor maneira de resolver isso é usar um sistema de modelagem. O sistema de modelagem é basicamente uma mini-linguagem que usamos para construir nossas páginas da web. Deixe-me mostrar-lhe o sistema de modelagem que este site em particular está usando. Então, estamos usando o sistema de modelagem Twig. Você pode ver que, por exemplo, temos um cabeçalho lá que diz Perfil para, e depois entre chaves duplas, é pessoa.nome. Isso é pegar o conteúdo de uma variável chamada pessoa, pegando um campo nele chamado nome, e, em seguida, enviá-lo para o navegador da web. Os sistemas de modelagem por padrão protegerão você de scripts entre sites. Na verdade, eu tive que dizer especificamente a este sistema de modelagem para não me proteger para que pudéssemos ver a vulnerabilidade. Nós olhamos para baixo onde produzimos o texto Sobre. Eu adicionei no sinalizador bruto lá para dizer ao sistema de templates, não me proteja de scripts entre sites. Então deixe-me remover essa bandeira bruta, salve isso e, em seguida, atualize este perfil. Então agora você pode ver que eu vejo o JavaScript real que eles inseriram. Ele não executa. Um sistema de templates é de longe a sua melhor maneira para proteger contra scripts entre sites, uma vez que irá protegê-lo automaticamente em todas as vezes que você produza algo para o navegador da web. Você não precisa se preocupar em perder algo no seu filtro. Há outra vulnerabilidade de script entre sites no site do quadro de avisos. Lembre-se do que falamos quando falamos sobre entrada e saída e quais ações podem ser vulneráveis. Vou deixar como exercício para você para encontrar aquele e corrigi-lo. Obrigado por assistir. Na próxima lição, veremos a manipulação de URL, truque muito comum que os hackers usam para obter acesso a áreas eles não devem ser capazes de acessar.