Talvez a vulnerabilidade de segurança de aplicações web mais comum e mais debatido é Cross-Site Scripting (XSS). Quando tais vulnerabilidades estão presentes, os atacantes podem injetar scripts maliciosos em um site inofensivo de forma que seja executado no navegador do usuário.
Ataques XSS são geralmente divididos em duas categorias: persistente (ou armazenado) e não-persistente (refletido). Ataques XSS persistente são armazenados no servidor e executado sempre que um usuário visita a página onde o script está armazenado. Fóruns de usuários, comentários e outros locais onde os usuários podem salvar entrada que serão exibidas para outros usuários são locais ideais para esses tipos de ataques. Ataques XSS não-persistentes não são armazenados no servidor, mas são criados através do envio de solicitações com o próprio ataque XSS. Os ataques ocorrem quando o input do usuário é incluído na resposta do servidor, por exemplo, em mensagens de erro ou resultados de pesquisa.
Ataques XSS não-persistentes dependem de um usuário enviar um pedido com o ataque XSS incluídos na solicitação, portanto, provavelmente haverá algum tipo de engenharia social para o ataque também. Na verdade, ter XSS pode realmente aumentar o sucesso de um ataque de engenharia social, porque você pode criar uma URL que faz parte de um site de verdade, o qual o usuário conhece e confia em usar, e o XSS será usado para, por exemplo, redirecionar o usuário para uma página maliciosa. Como os outros ataques discutidos nesta postagem, ataques XSS devem contar com uma falta de atenção no saneamento do input do usuário, o que nos permite criar e executar um script malicioso. (mais…)